#include<stdio.h>
#include<conio.h>
void main()
{
int a[5]={1,2,3,4,5};
int (*p)[5];
int *p1[5];
clrscr();
printf("%d\n",(int)sizeof(a)); // 10
printf("%d\n",(int)sizeof(p)); //2
printf("%d\n",(int)sizeof(p1)); //10
getch();
}
第一个输出是 10,因为每个整数都是 2 个字节,因此 5 个整数将占用 10 个字节。
我无法理解第三个输出,即 10。这里我们有一个指针数组,每个指针都指向一个整数。我系统中指针(或地址)的大小是 32 位(4 字节)。所以输出应该是 5*4=20,因为我们有 5 个指针,每个指针有 4 个字节?
最佳答案
第二个打印输出显示您机器上指针的大小是 2 个字节。
数组 int *p1[5];
有 5 个元素,而不是 10 个。
5 * 2 = 10。
关于c++ - 整数指针数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990450/