数组做函数参数注意事项
数组的长度计算,可以用sizeof(a)来计算。但是,一旦数组做了函数的参数,那么数组的长度就和指针的长度一样了。比如下面的代码:
void func(int a[], int len)//a是数组名,len是数组元素个数。数组做函数参数,一般都这么传递
{
printf(“sizeof(a) in func=%d\n”, sizeof(a));
}
int a[10] = {0};
printf(“sizeof(a)=%d\n”, sizeof(a));
func(a, 10);
执行上面的代码,你会发现输出的两个结果为:
sizeof(a)=40
sizeof(a) in func=4
也就是说,如果数组做了函数的参数,那么在函数内部,数组就变为了指针。实际上,数组是一个常量指针。比如:
int a[10];
a的类型为:int *const a;//a is a const pointer to int;