Вопрос: Что такое NULL и как он определен с помощью #define? Ответ: Многим программистам не нравятся нули, беспорядочно разбросанные по программам. По этой причине макрос препроцессора NULL определен в <stdio.h> или <stddef.h> как значение 0 (или (void *) 0, об этом значении поговорим позже.) Программист, который хочет явно различать 0 как целое и 0 как нулевой указатель может использовать NULL в тех местах, где необходим нулевой указатель. Это только стилистическое соглашение; препроцессор преобразует NULL опять в 0, который затем распознается компилятором в соответствующем контексте как нулевой указатель. В отдельных случаях при передаче параметров функции, может все же потребоваться явное указание типа перед NULL (как и перед 0). (Таблица в вопросе 1.2 Автор: Кодт приложима как к NULL, так и к 0).Дата: 16.01.03 NULL нужно использовать только для указателей; см. вопрос 1.8. Смотри: K&R I Разд. 5.4 c. 97-8; K&R II Разд. 5.4 c. 102; H&S Разд. 13.1 c. 283; ANSI Разд. 4.1.5 c. 99, Разд. 3.2.2.3 c. 38, Rationale Разд. 4.1.5 c. 74. |