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

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

我应该使用哪种格式说明符来打印变量的地址?我在下面那一批人之间感到困惑。

%u-无符号整数

%x-十六进制值

%p-空指针

打印地址的最佳格式是哪一种?


慕运维8079593
浏览 763回答 3
3回答

浮云间

p用于打印指针的转换说明符。用这个。int a = 42;printf("%p\n", (void *) &a);请记住,省略强制转换是未定义的行为,并且使用p转换说明符是以实现定义的方式完成的。

HUH函数

使用%p,用于“指针”,并且不要使用其他任何东西*。标准并不保证您可以像对待任何特定类型的整数一样对待指针,因此实际上您将得到带有整型格式的未定义行为。(例如,%u期望unsigned int,但如果void*有不同的大小或对齐要求unsigned int?)(见乔纳森的详细答案!)可供选择%p你能,会,可以使用指针特定的宏。<inttypes.h>,加入C99。所有对象指针都隐式转换为void*在C中,但是为了将指针作为变量参数传递,您必须显式地转换它(因为任意对象指针仅为可转换,但不是完全相同使指针无效):printf("x&nbsp;lives&nbsp;at&nbsp;%p.\n",&nbsp;(void*)&x);
打开App,查看更多内容
随时随地看视频慕课网APP