Вопрос: Я в растерянности. Гарантируется, что NULL равен 0, а нулевой указатель нет?

Ответ:
Термин "null" (нулевой) или "NULL" может не совсем обдуманно использоваться в нескольких смыслах:

  1. Нулевой указатель как абстрактное понятие языка, определенное в вопросе 1.1
    Автор: Кодт
    Дата: 16.01.03
    .

    Он представляется с помощью...
  2. Внутреннее (на стадии выполнения) представление нулевого указателя, которое может быть отлично от нуля и различаться для различных типов указателей. О внутреннем представлении нулевого указателя должны заботиться только создатели компилятора.

    Программистам на С это представление не известно, поскольку они используют...
  3. Синтаксическое соглашение для нулевых указателей, символ "0".

    Вместо него часто используют...
  4. Макрос NULL который с помощью #define определен как "0" или "(void *)0".

    Наконец, нас может запутать...
  5. Нулевой код ASCII (NUL), в котором все биты равны нулю, но который имеет мало общего с нулевым указателем, разве что названия похожи;

    и...
  6. "Нулевой стринг", или, что то же самое, пустой стринг (""). Термин "нулевой стринг" может приводить к путанице в С и, возможно, его следует избегать, так как пустой стринг включает символ '\0', но не нулевой указатель, и здесь мы уже идем по кругу...

В этом документе фраза "нулевой указатель" (null прописными буквами) используется в смысле 1, символ "0" в смысле 3, а слово "NULL", записанное большими буквами, в смысле 4.
Автор: Кодт    Оценить