Вопрос по c – Каково поведение спецификатора преобразования `p` с указателем` NULL`?

12

Интересно, если делает:

<code>void *ptr = NULL;
printf("%p\n", ptr);
</code>

Всегда даст(nil) выход?

Зависит ли оно от реализации стандартной библиотеки или это стандартная спецификация C99?

Я переделываю этот вопрос, потому что ответы неверны. Это проблема для вопроса ~ 5000 просмотров. Stargateur
@Stargateur: на пути к значку некроманта? chqrlie
Я думаю, что стандарт не определяет, что вывод printf для%p формат. Это до реализации. Basile Starynkevitch
@chqrlie Нет, просто пользователь изC chat кто утверждает, что это неопределенное поведение, но он не хочет отвечать на старый вопрос с неправильным ответом с высокой оценкой ... поэтому он хочет создать новый. Поэтому я просто пытаюсь улучшить вопрос, чтобы убедить его ответить здесь: с. Stargateur

Ваш Ответ

2   ответа
5

Не за что. На моей машине (Mac сi686-apple-darwin11-llvm-gcc-4.2) это печатает0x0.

19

(null) так что я предполагаю, что его реализация определена. В общем, все%p prints определяется реализацией:

7.21.6.1

The argument shall be a pointer to void. The value of the pointer is converted to a sequence of printing characters, in an implementation-defined manner.

Похожие вопросы