printf ptr:可以消除开头的0x吗?
收藏

Linux printf将%p参数呈现为带前导的十六进制数字。是否有方法使其不打印该十六进制数字?(需要同时处理32位和64位。)


最佳答案:

您可以使用uintptr_tfrom<inttypes.h>的格式说明符:

#include <inttypes.h>
[...]
printf("%"PRIxPTR"\n", (uintptr_t) p);

这与%x类型的uintptr_t类似,后者是一个整数类型,能够从/到任何指针类型进行往返转换。

    公众号
    关注公众号订阅更多技术干货!