为了账号安全,请及时绑定邮箱和手机立即绑定

正确的格式说明符以打印指针或地址?

正确的格式说明符以打印指针或地址?

C++ C
慕运维8079593 2019-06-12 16:33:43
正确的格式说明符以打印指针或地址?我应该使用哪种格式说明符来打印变量的地址?我在下面那一批人之间感到困惑。%u-无符号整数%x-十六进制值%p-空指针打印地址的最佳格式是哪一种?
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

p用于打印指针的转换说明符。用这个。

int a = 42;printf("%p\n", (void *) &a);

请记住,省略强制转换是未定义的行为,并且使用p转换说明符是以实现定义的方式完成的。


查看完整回答
反对 回复 2019-06-12
?
HUH函数

TA贡献1836条经验 获得超4个赞

使用%p,用于“指针”,并且不要使用其他任何东西*。标准并不保证您可以像对待任何特定类型的整数一样对待指针,因此实际上您将得到带有整型格式的未定义行为。(例如,%u期望unsigned int,但如果void*有不同的大小或对齐要求unsigned int?)

(见乔纳森的详细答案!)可供选择%p能,会,可以使用指针特定的宏。<inttypes.h>,加入C99。

所有对象指针都隐式转换为void*在C中,但是为了将指针作为变量参数传递,您必须显式地转换它(因为任意对象指针仅为可转换,但不是完全相同使指针无效):

printf("x lives at %p.\n", (void*)&x);


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 761 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信