Вопрос: Если "NULL" и "0" эквивалентны, то какую форму из двух использовать? Ответ: Многие программисты верят, что "NULL" должен использоваться во всех выражениях, содержащих указатели как напоминание о том, что значение должно рассматриваться как указатель. Другие же чувствуют, что путаница, окружающая "NULL" и "0", только усугубляется, если "0" спрятать в операторе #define и предпочитают использовать "0" вместо "NULL". Единственного ответа не существует. Программисты на С должны понимать, что "NULL" и "0" взаимозаменяемы и что "0" без преобразования типа можно без сомнения использовать при инициализации, присваивании и сравнении. Любое использование "NULL" (в противоположность "0" ) должно рассматриваться как ненавязчивое напоминание, что используется указатель; программистам не нужно ничего делать (как для своего собственного понимания, так и для компилятора) для того, чтобы отличать нулевые указатели от целого числа 0. NULL нельзя использовать, когда необходим другой тип нуля. Даже если это и будет работать, с точки зрения стиля программирования это плохо. (ANSI позволяет определить NULL с помощью Такое определение не позволит использовать NULL там, где не подразумеваются указатели).Особенно не рекомендуется использовать NULL там, где требуется нулевой код ASCII (NUL). Если необходимо, напишите собственное определение
Смотри: K&R II Разд. 5.4 c. 102. |