我想知道是否:
void *ptr = NULL;
printf("%p\n", ptr);
总是会提供(nil)
输出吗?
它是依赖于标准库实现,还是C99标准规范?
答案 0 :(得分:19)
在我的系统上它产生(null)
所以我猜它是实现定义的。更一般地说,所有%p
打印都是实现定义的:
7.21.6.1
参数应该是指向void的指针。指针的值是 转换为一系列打印字符,在 实现定义的方式。
答案 1 :(得分:5)
总是给出(无)?
完全没有。在我的机器上(带有i686-apple-darwin11-llvm-gcc-4.2
的Mac),它会打印0x0
。