请尝试以下代码: void intArrayAsPointerPrinter(int iSize){
int * p = 0;
int ** q = 0;
int *** r = 0;
for(int i = 0; i < iSize; i++) {
printf("%p %p %p\n", p,q,r);
p++;
q++;
r++;
}
}
用大小 3 调用它,我得到以下输出:
0x0 0x0 0x0 0x4 0x8 0x8 0x8 0x10 0x10
问:为什么(int*)++前进4而其他前进8?所有指针应该是 4 字节还是 8 字节?
为什么(int*)++前进4而其他前进8?所有指针应该是 4 字节还是 8 字节?
指针前进会使其前进所指物体之一的大小。
A
int *
指向 int
,因此递增 1 将使其增加 int
的大小。你的正好是四个尺寸。
A
int **
指向 int *
,因此递增 1 将使其增加 int *
的大小。你的正好是八号。