You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于数组与sizeof()取值的疑问:代码输出24的原因是什么?

为什么这段C++代码中sizeof(data)的输出是24?

嘿,这个问题刚好戳中了C++里sizeof运算符在数组上的一个核心行为点,我来给你讲明白:

首先,先明确两个关键信息:

  • 当sizeof直接作用于定义在当前作用域的数组名时,它计算的是整个数组所占的总字节数,而不是元素个数或者单个元素的大小。
  • 在绝大多数现代系统(32位/64位)中,int类型的大小是4字节(这是C++标准允许的常见实现,你的结果24也刚好对应这个数值)。

再看你的代码片段:

int data[] = { 5, 6, 7, 1, 4, 0 }; 
int n = sizeof(data); 
cout << n << endl;
  • 数组data里一共有6个int元素
  • 总字节数 = 元素个数 × 单个int的字节数 = 6 × 4 = 24,所以最终输出就是24啦。

这里还要提一个容易踩坑的点:如果把数组作为参数传递给函数,这时候数组名会退化成指针,此时用sizeof得到的就是指针的大小(比如64位系统是8字节),但在你的代码里,数组是直接定义在当前作用域的,所以不会触发这个退化,sizeof会正确计算整个数组的总占用字节数。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:10:36