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
。这是为什么?两者不应该返回相同的内存地址吗? 最佳答案
从你的十六进制地址-
The address of firstInt is: 0x7fff5fbff7cc
地址的大小是6字节长。但是
unsignedint
的大小是4字节。当您试图使用%u
打印地址时,它将导致未定义的行为。因此,始终使用
%p
打印地址。关于objective-c - 打印指针地址和&符地址之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25804498/