Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道是否:
void *ptr = NULL; printf("%p\n", ptr);
总是会给出(nil)输出吗?
(nil)
它依赖于标准库实现,还是 C99 标准规范?
在我的系统上它会产生(null),所以我猜它是定义的实现。更一般地说,%p打印的所有内容都是实现定义的:
(null)
%p
7.21.6.1 参数应该是一个指向 void 的指针。指针的值以实现定义的方式转换为打印字符序列。
7.21.6.1
参数应该是一个指向 void 的指针。指针的值以实现定义的方式转换为打印字符序列。
总是给(零)?
一点也不。在我的机器(带有 的 Mac i686-apple-darwin11-llvm-gcc-4.2)上打印0x0.
i686-apple-darwin11-llvm-gcc-4.2
0x0