C语言中,sizeof(数组名)在不同函数下的意义不同。

新手上路,请多包涵

今天在学习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函数中运行吗?

希望可以得到大家的帮助,谢谢!

阅读 1.6k
1 个回答

传递到函数内的数组名只是一个指针,相当于sizeof(指针),因为你的是32位系统所以指针长度为4,如果64位就是8了,如果要获取真实大小可以把数组长度也传进来计算。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题