Вопрос: Что такое NULL и как он определен с помощью #define?

Ответ:
Многим программистам не нравятся нули, беспорядочно разбросанные по программам.
По этой причине макрос препроцессора NULL определен в <stdio.h> или <stddef.h> как значение 0 (или (void *) 0, об этом значении поговорим позже.)
Программист, который хочет явно различать 0 как целое и 0 как нулевой указатель может использовать NULL в тех местах, где необходим нулевой указатель. Это только стилистическое соглашение; препроцессор преобразует NULL опять в 0, который затем распознается компилятором в соответствующем контексте как нулевой указатель. В отдельных случаях при передаче параметров функции, может все же потребоваться явное указание типа перед NULL (как и перед 0). (Таблица в вопросе 1.2
Автор: Кодт
Дата: 16.01.03
приложима как к NULL, так и к 0).

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.
Автор: Кодт    Оценить