为什么 sizeof 在 C++ 中给出不正确的字节数?

Why is sizeof giving incorrect number of bytes in C++?

本文关键字:不正确 字节数 sizeof C++ 为什么      更新时间:2023-10-16

我正在尝试获取C++数组的大小,以便以后用于以后的东西。为什么这会产生 16?

#include <iostream>
using namespace std;
int main()
{
int a[4];
cout << sizeof(a) << endl;
return 0;
}

不应该给20吗?因为这个数组中基本上有 20 个字节从 a[0] 到 a[4]?元素的大小可以通过获取来验证 -

sizeof(a[0])

现在这是 4. 16/4 = 4,这意味着有 4 个 4 字节的块,而实际上应该有 5。为什么?

附言我的主要困惑源于获得 sizeof(a[4]( - 即 4。由于它给出了输出 4 - 我认为它是数组的一部分。

如果你声明数组a[4],这意味着它有4个元素。
唯一有效的指示是a[0]a[1]a[2]a[3]

访问a[4]无效。
我不知道你为什么认为a[4]会有 5 个元素。

这个数组有 4 个元素,它的大小是:

4-elements * 4-bytes = 16 bytes.

输出没有错。当你声明一个数组int a[4]时,它有4个数据块a[0]a[1]a[2]a[3]

执行int a[4];时,您声明的是一个4整数数组。因此,整个向量的大小是一个int大小的 4 倍(如果int恰好是 4 个字节,则乘积为 16 个字节(。

C/C++(和许多其他语言(使用从零开始的索引。这意味着上面定义的数组元素从03编号。

int a[4];

有四个元素:a[0]a[1]a[2]a[3]