数组名作为函数参数时,进行地址传递,是将实参数组a的首地址传递给形参数组名b,此时a、b两数组占用相同的地址的一段连续内存单元。同时,a和b中下表相同的元素实际上也占相同的内存单元。但是传递的只是函数首地址,如果在函数内部调用sizeof来测试数组b的长度,所测长度只是首地址指向元素的长度。所以为了在被调函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数。例如:
void fun(int arr[])
{int a = sizeof(arr)/sizeof(arr[0]);//在函数调用时,本意是想获取传递给形参的实参的长度
//事实并非如此。
}
int main()
{int arr[10] = {0};
fun(arr);
}