【发布时间】:2015-05-19 12:43:24
【问题描述】:
当我在 64 位机器上为 c++ 程序编写代码时,我注意到打印变量的地址(例如)只返回 12 个十六进制字符,而不是 16 个。这是一个示例代码:
int a = 3 ;
cout sizeof(&a) << " bytes" << endl ;
cout << &a << endl ;
输出是:
8 个字节
0x7fff007bcce0
显然,变量的地址是 8 字节(64 位系统)。但是当我打印它时,我只得到 12 个十六进制数字而不是 16 个。
-
为什么会这样?我认为这是因为 4 个“丢失”的数字 是前导零,未打印。但这只是我的 想,我希望有一个明确的和技术上正确的 回答。
-
如何打印整个地址?有没有内置的解决方案, 或者我应该手动使用“sizeof”以获得真正的长度和 然后在地址中添加正确数量的零?
原谅我,我用谷歌搜索了一天的愚蠢问题的答案,但我找不到答案。我只是一个新手。 (在stackoverflow上,我没有找到任何关于我需要知道的问题/答案,但也许我错了。)
【问题讨论】:
标签: c++ 64-bit cout memory-address