关于数组与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
相关产品推荐
相关产品推荐

