使用`NULL`指针转换说明符`p`的行为是什么?

时间:2012-05-05 11:23:03

标签: c null printf

我想知道是否:

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

总是会提供(nil)输出吗?

它是依赖于标准库实现,还是C99标准规范?

2 个答案:

答案 0 :(得分:19)

在我的系统上它产生(null)所以我猜它是实现定义的。更一般地说,所有%p打印都是实现定义的:

  

7.21.6.1

     

参数应该是指向void的指针。指针的值是   转换为一系列打印字符,在   实现定义的方式。

答案 1 :(得分:5)

  

总是给出(无)?

完全没有。在我的机器上(带有i686-apple-darwin11-llvm-gcc-4.2的Mac),它会打印0x0