在64位系统上使用printf%016x与%p打印地址

时间:2014-01-04 14:43:49

标签: c pointers printf

我在阅读有关C和汇编的书时遇到了一些麻烦。当我使用64位时,作者使用32位环境。 问题是作者经常使用

printf("%08x", &var);

打印在32位上正常工作的地址。但是当我在64位运行时,我只得到一半的地址,而%p给我整个地址......那么为什么会这样呢?我当然使用%016x代替%08x

作者仅使用%p作为指针。 那我什么时候应该使用什么?

1 个答案:

答案 0 :(得分:3)

要在printf中打印指针,使用%p void *类型是符合C标准的方式。

printf("%p", (void *)&var);