当我在一台64位机器上运行此代码时:
它输出:
在一本教科书中我发现了这个问题:
我的计算机的存储地址是32位,在八个十六进制数字中表示。
我的问题是:
为什么32位和64位的地址有两个不同的长度?
在32位和64位中,8个数字和14个数字如何用于表示地址?
#include <stdio.h>
int main()
{
int a[10];
printf("%p",&a);
return 0;
}
它输出:
0x7fffe9ebf984 (14 digits)
在一本教科书中我发现了这个问题:
我的计算机的存储地址是32位,在八个十六进制数字中表示。
我的问题是:
为什么32位和64位的地址有两个不同的长度?
在32位和64位中,8个数字和14个数字如何用于表示地址?
printf("%p",&a);
不需要打印所有前导的0
数字,也不意味着存在一个连续的线性内存范围从 0 到0x7fffFFFFFFFF
。好奇的是,printf("%p",NULL);
会输出什么? - chux - Reinstate Monica