Язык С в вопросах и ответах



             

Язык С в вопросах и ответах - сстр. 10


            который     имеет мало общего с нулевым указателем,  разве что
            названия похожи; и...

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

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

1.11: Почему так много путаницы связано с нулевыми указателями? Почему
      так часто возникают вопросы?

О:      Программисты на С традиционно хотят знать больше, чем это необходимо
        для программирования, о внутреннем представлении кода.  Тот факт,
        что внутреннее представление нулевых указателей для большинства
        машин совпадает с их представлением в исходном тексте, т.е. нулем,
        способствует появлению неверных обобщений. Использование макроса
        (NULL) предполагает, что значение может впоследствии измениться, или
        иметь другое значение для какого-нибудь компьютера.  Конструкция
        "if(p == 0)" может быть истолкована неверно, как преобразование перед
        сравнением p к целому типу, а не 0 к типу указателя.  Наконец, часто
        не замечают, что термин "null" употребляется в разных смыслах
        (перечисленных выше).

      Хороший     способ устранить путаницу - вообразить,  что язык С имеет
        ключевое слово (возможно, nil, как в Паскале), которое обозначает
        нулевой указатель. Компилятор либо пребразует "nil" в нулевой
        указатель нужного типа, либо сообщает об ошибке, когда этого сделать
      нельзя.     На самом деле, ключевое слово для нулевого указателя в С



Содержание  Назад  Вперед