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/

10-11 15:15