#include<stdio.h>
void fun(int a[])
{
int b = sizeof(a);
printf("%d\n", b);
}
int main()
{
int a[5] = { 1,2,3,4,5 };
int b = sizeof(a);
printf("%d\n", b);
fun(a);
return 0;
}
打印出来为什么是20 和 4(在32位的情况下)
这是因为在 C/C++ 数组名作为实参传递给函数时,退化为指针。fun函数它完全等同于
void fun(int* a)
{
int b = sizeof(a);
printf("%d\n", b);
}
这样导致我们在传递一个数组名作为函数实参时,我们还应该传入这个数组的长度,因为在函数内我们无法获取数组的长度(正确的字符串数组除外,因为正确的字符串数组最后一个总是'\0')