数组做函数参数
在函数内部计算数组空间的时候,一定要注意:当使用数组做函数参数的时候,数组在函数内部退化为指针。比如下面的例子:
int test_array(int a[],size_t len)
{
printf(“sizeof a:%d\n”,sizeof(a));//在函数内部,arr已经退化为指针,此时长度为4(x86)或者为8(X64)
}
int main(void)
{
int arr[100]={0};
printf(“sizeof arr:%d\n”,sizeof(arr));//此时arr作为数组,它的长度为400
test_array(a,sizeof(arr));
return 0;
}
所以,以后不能在函数内部计算实参数组的元素个数,必须把元素个数通过参数的方式传递给函数,否则会出现问题。