如果我有一个将数组作为参数传递的函数。有没有办法计算被调用函数中的数组大小,如果size也不作为参数传递。 这是片段:
void array_size(int array[])
{
//How i can calculate the array size here
}
int main()
{
int a[]={1,2,3};
array_size(a);
}
答案 0 :(得分:1)
在array_size()
函数内,"数组"是一个指针。它被转换为指向调用函数中第一个元素的指针。
如果你需要知道尺寸,你需要传递它。在main()
函数中,a
是一个数组,您可以使用
number_of_elements = sizeof a / sizeof *a;
然后将其传递给函数(需要更新)
array_size(a, number_of_elements);
// ^ the array is converted to a pointer to its first element