如果我有一个像这样的指针:
int* ptr;
我这样做:
printf("%#x\n%#x\n%#x\n", ptr, ptr+1, ptr+2);
我得到的输出为:
some address
some address + 4bytes
some address + 8bytes
现在如果我做指针short int* ptr
我以与上面相同的方式打印并得到输出:
some address
some address + 2bytes
some address + 4bytes
这是为什么?地址不是无符号整数吗?如果是这样,那么指针指向的数据类型应该无关紧要。指针将始终存储一个无符号整数地址,因此它将占用 4 个字节。为什么短 int 指针占用 2 个字节,而 int 指针占用 4 个字节?最后,两个指针都只存储地址,不是吗?