Язык С в вопросах и ответах - сстр. 9
Особенно не рекомендуется
использовать NULL там, где требуется нулевой код ASCII (NUL). Если
необходимо, напишите собственное определение
#define NUL '\0'
Смотри: K&R II Разд. 5.4 c. 102.
1.9 Но не лучше ли будет использовать NULL (вместо 0) в случае, когда
значение NULL изменяется, быть может, на компьютере с ненулевым
внутренним представлением нулевых указателей?
О: Нет. Хотя символические константы часто используются вместо чисел
из-за того, что числа могут измениться, в данном случае причина, по
которой используется NULL, иная. Еще раз повторим: язык гарантирует,
что 0, встреченный там, где по контексту подразумевается указатель,
будет заменен компилятором на нулевой указатель. NULL используется
только с точки зрения лучшего стиля программирования.
1.10: Я в растерянности. Гарантируется, что NULL равен 0, а нулевой
указатель нет?
О: Термин "null" или "NULL" может не совсем обдуманно использоваться
в нескольких смыслах:
1. Нулевой указатель как абстрактное понятие языка, определенное
в вопросе 1.1. Он представляется с помощью...
2. Внутреннее (на стадии выполнения) представление нулевого
указателя, которое может быть отлично от нуля и различаться
для различных типов указателей. О внутреннем представлении
нулевого указателя должны заботиться только создатели
компилятора. Программистам на С это представление не
известно, поскольку они используют...
3. Синтаксическое соглашение для нулевых указателей, символ
"0". Вместо него часто используют...
4. Макрос NULL который с помощью #define определен как "0"
или "(void *)0". Наконец, нас может запутать...
5. Нулевой код ASCII (NUL), в котором все биты равны нулю, но
Содержание Назад Вперед