bph*_*bph 2 c arrays parameters
我(我想)理解你只能在堆栈的编译时声明数组的大小(使用sizeof),例如
int my_array[] = {1,2,3};
sizeof(my_array) == 3;
Run Code Online (Sandbox Code Playgroud)
一旦开始使用指针,就会丢失此长度信息.
例如,如果您将指向int的指针作为函数参数传递以将int数组传递给函数,您不能再sizeof()以这种方式使用它,它将只返回用于存储指针的字节数.
显然,了解阵列的长度至关重要.
那么在传递数组时我应该使用以下哪个选项?
传递指针和附带的长度参数
int my_func(int *my_array, size_t len_my_array)
创建我自己的矢量结构
struct vector {
int *my_array;
size_t len;
}
int my_func(struct vector *my_vector)
Run Code Online (Sandbox Code Playgroud)使用别人的矢量实现.(是否存在C的默认实现,因为有C++?)
我错过了另一种方法吗?
(我目前正在使用第一个选项,但它有点笨拙,我很想知道这是否被认为是糟糕的编程习惯)