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

总是给(零)?

一点也不。在我的机器(带有 的 Mac i686-apple-darwin11-llvm-gcc-4.2)上打印0x0.

于 2012-05-05T11:24:57.410 回答