12

私はそうするのだろうか:

void *ptr = NULL;
printf("%p\n", ptr);

常に(nil)出力しますか?

それは標準ライブラリの実装に依存しますか、それともC99標準仕様ですか?

4

2 に答える 2

19

私のシステムではそれが得られる(null)ので、実装が定義されていると思います。より一般的には、すべて%pの印刷は実装定義です。

7.21.6.1

引数はvoidへのポインタでなければなりません。ポインタの値は、実装で定義された方法で、一連の印刷文字に変換されます。

于 2012-05-05T11:25:10.370 に答える
5

常に(nil)を与えますか?

全くない。私のマシン(Macを使用i686-apple-darwin11-llvm-gcc-4.2)では、印刷され0x0ます。

于 2012-05-05T11:24:57.410 に答える