例如在我的 64 位 ubuntu 机器中,指针的长度是 2 字节并且有 1 个内存地址,那么它是否总是 2 字节,无论它指向的是 long int 还是 int 吗?
如果是这样,确定它指向的数据类型有什么意义?在下面的代码中,除了不兼容的警告目的之外,数据代表多少字节,通过使用%hu
and %lu
,所以无论指针是 int 还是 long ,结果都是一样的。谁能给我一个提示?
#include <stdio.h>
int main(void) {
int *ptr1;
long int *ptr2;
long int a = 0xffffffff;
ptr1 = &a;
ptr2 = &a;
printf("the value should the same as 2 ** 16 %hu", *ptr1);
printf("the value should the same as 2 ** 32 %lu", *ptr2);
return 0;
}
更新:
确定我能想到的指针类型的另一个目的是指针算术,例如:
ptr + 1
,它将跳过数据类型所具有的字节长度,而不是总是某个值