今天在学习C语言指针的时候遇到了一点问题,想不明白,提问一下。
我查到的资料显示,sizeof(数组名)——计算整个数组的大小。
我的编译器是32位VS
第一段代码
#include <stdio.h>
void test(int arr[])
{
int sz = sizeof(arr);
printf("%d\n", sz);
}
int main(void)
{
int arr[10] = { 0 };
test(arr);
return 0;
}
输出结果为4
第二段代码
#include <stdio.h>
int main(void)
{
int arr[10] = { 0 };
int sz = sizeof(arr);
printf("%d\n", sz);
return 0;
}
输出结果40
带回到代码段1和代码段2,可以看出在代码段2中sizeof(arr)=40,符合查到的资料。三十很疑惑为什么在代码段1中sizeof(arr)=4,是因为这段代码没有在main函数中运行吗?
希望可以得到大家的帮助,谢谢!
传递到函数内的数组名只是一个指针,相当于sizeof(指针),因为你的是32位系统所以指针长度为4,如果64位就是8了,如果要获取真实大小可以把数组长度也传进来计算。