我不明白 sizeof() 和数组给出的值

I don't understand value given with sizeof() with Arrays

在此代码片段中,我得到的输出是 24。这是为什么?

int data[] = { 5, 6, 7, 1, 4, 0 };

int n = sizeof(data);

cout << n << endl;

sizeof returns 24 因为你有 6 个整数,每个整数占 4 个字节。

首先要记住arrayspointers是不一样的

在数组的情况下,sizeof() returns 是整个数组的大小,在您的示例中为 24 个字节,因为您有 int 的 6 个元素,并且每个是4个字节。

现在看看这段代码:

int *data = { 5, 6, 7, 1, 4, 0 };
int n = sizeof(data);

在这种情况下,sizeof() 将 return 指针的大小,而不是数组的大小。指针在 32 位应用程序中为 4 个字节,在 64 位应用程序中为 8 个字节。