我在阅读有关C和汇编的书时遇到了一些麻烦。当我使用64位时,作者使用32位环境。 问题是作者经常使用
printf("%08x", &var);
打印在32位上正常工作的地址。但是当我在64位运行时,我只得到一半的地址,而%p
给我整个地址......那么为什么会这样呢?我当然使用%016x
代替%08x
。
作者仅使用%p
作为指针。
那我什么时候应该使用什么?
答案 0 :(得分:3)
要在printf
中打印指针,使用%p
void *
类型是符合C标准的方式。
printf("%p", (void *)&var);