Вопрос: Учитывая всю эту путаницу, связанную с нулевыми указателями, не лучше ли просто потребовать, чтобы их внутреннее представление было нулевым?

Ответ:
Если причина только в этом, то поступать так было бы неразумно, так как это неоправданно ограничит конкретную реализацию, которая (без таких ограничений) будет естественным образом представлять нулевые указатели специальными, отличными от нуля значениями, особенно когда эти значения автоматически будут вызывать специальные аппаратные прерывания, связанные с неверным доступом.

Кроме того, что это требование даст на практике?
  • Понимание нулевых указателей не требует знаний о том, нулевое или ненулевое их внутреннее представление.
  • Предположение о том, что внутреннее представление нулевое, не приводит к упрощению кода (за исключением некоторых случаем сомнительного использования calloc; см. вопрос 3.13).
  • Знание того, что внутреннее представление равно нулю, не упростит вызовы функций, так как размер указателя может быть отличным от размера указателя на int.

    (Если вместо "0" для обозначения нулевого указателя использовать "nil" (см. вопрос 1.11
    Автор: Кодт
    Дата: 16.01.03
    ), необходимость в нулевом внутреннем представлении нулевых указателей даже бы не возникла).
  • Автор: Кодт    Оценить