首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以c为单位的数组大小

以c为单位的数组大小
EN

Stack Overflow用户
提问于 2011-09-25 20:17:23
回答 5查看 23K关注 0票数 18

一个困扰我的简单问题。假设我在main中定义了一个数组,比如int arr[5]。现在,如果我仍然在main中,并且我设置了int i = sizeof(arr)/sizeof(arr[0]),那么我被设置为5,但是如果我将数组作为函数参数传递,并在这个函数中进行完全相同的计算,我会得到一个不同的数字。为什么会这样呢?起初我认为这是因为在函数中arr是一个指针,但据我所知arr也是主函数中的一个指针!

此外,如果我做一些非常类似的事情,只是动态初始化数组,我会得到奇怪的结果:

代码语言:javascript
复制
int *arr = (int*) malloc(sizeof(int) * 5);
int length = sizeof(*arr) / sizeof(arr[0]);
printf("%d\n",length);

这里的输出是1。你知道为什么吗?提前感谢!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7545428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档