使用`NULL`指针转换说明符`p`的行为是什么?
我想知道是否:
void *ptr = NULL; printf("%p\n", ptr);
总是给出(nil)
输出?
它是依赖于标准库实现,还是C99标准规范?
在我的系统上它产生(null)
所以我猜它是实现定义的。 更一般地说,所有%p
print都是实现定义的:
7.21.6.1
参数应该是指向void的指针。 指针的值以实现定义的方式转换为打印字符序列。
总是给(零)?
一点也不。 在我的机器上(Mac与i686-apple-darwin11-llvm-gcc-4.2
),它打印0x0
。