这只是出于教育目的的实验。 我在64位系统上打印指针的值,但是我的输出只有12个十六进制数字!我知道32位系统上的指针(或内存地址)占用32位大小,能够寻址2 ^ 32个可能的不同内存地址。同样,在64位系统上的指针应占用64位,8个字节或16个半字节。由于半字节对应于十六进制数字,因此输出应具有16个十六进制数字。
enum { NIBBLES_IN_BYTE = 2 };
int num1 = 5;
int* ptr1 = &num1;
cout << ptr1 << endl;
cout << sizeof(ptr1) * NIBBLES_IN_BYTE << endl;
输出:
0x7fff3751e858
16