c++ - 整数指针数组的大小

标签 c++ arrays pointers

#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/

相关文章:

C++ 使用模板时没有匹配的调用函数,链接器错误

python - imageCollection.reduce() 函数在使用 Google Earth Engine Python API 导出时生成单像素图像

克隆结构?

c++ - 处理 IDispatch 参数和 COM

c++ - 局部变量栈

c++ - 使用 gcc 32 位编译,作为带有 -m64 的 64 位程序

c++ - 使用opencv进行图像边缘平滑

C++组合和初始化

java - ArrayOutOfBounds 异常合并排序

c - Linux POSIX C 动态字符串数组问题