【发布时间】:2014-09-12 09:01:42
【问题描述】:
int firstInt =10;
int *pointerFirstInt = &firstInt;
printf("The address of firstInt is: %u", &firstInt);
printf("\n");
printf("The address of firstInt is: %p", pointerFirstInt);
printf("\n");
以上代码返回如下:
The address of firstInt is: 1606416332
The address of firstInt is: 0x7fff5fbff7cc
我知道0x7fff5fbff7cc 是十六进制的,但是当我尝试将该数字转换为十进制时,它不等于1606416332。为什么是这样?两者不应该返回相同的内存地址吗?
【问题讨论】:
-
%u是unsigned int格式,长度可能为 32 位。您的指针显然大于 32 位...您应该在两次调用 printf() 时使用%p格式。 -
0x7fff5fbff7cc - 1606416332 == 0x7fff5fbff7cc - 0x5fbff7cc == 0x7fff00000000
标签: objective-c c pointers memory-address