Каково поведение спецификатора преобразования `p` с указателем` NULL`? Интересно, делает ли это: void *ptr = NULL; printf("%p\n", ptr); Всегда будет выдавать вывод (nil)? Это зависит от стандартной реализации библиотеки или стандартной спецификации C99? Ответ 1 В моей системе это дает (null), поэтому я предполагаю, что она определена. В более общем плане все %p -печатки определяются реализацией: 7.21.6.1 Аргумент должен быть указателем на void. Значение указателя преобразуется в последовательность печатных символов, в определенным образом. Ответ 2 Всегда будет указывать (nil)? Совсем нет. На моей машине (Mac с i686-apple-darwin11-llvm-gcc-4.2) он печатает 0x0.
Ответ 1 В моей системе это дает (null), поэтому я предполагаю, что она определена. В более общем плане все %p -печатки определяются реализацией: 7.21.6.1 Аргумент должен быть указателем на void. Значение указателя преобразуется в последовательность печатных символов, в определенным образом.
Ответ 2 Всегда будет указывать (nil)? Совсем нет. На моей машине (Mac с i686-apple-darwin11-llvm-gcc-4.2) он печатает 0x0.