Существует причина, по которой он не был заменен, посмотрите на это с другой стороны, существует такая огромная база программ на C, где лежат тысячи и тысячи кода, и создание замены может вызвать много горя, так как код должен был бы быть обновлен, чтобы отразить изменение, поскольку NULL
в контексте указателя означает, что вызов был бы неудачным и, следовательно, возвращал NULL
, чтобы обозначить условие, что код для обработки указателя потерпел неудачу , Кроме того, он используется в случае операций FILE *
, если файл был недействительным, будет возвращено NULL
. Представьте себе трудности, если весь этот код будет изменен, к сожалению, он является частью стандарта ANSI C и, следовательно, является очень дорогостоящим упражнением с точки зрения $$$, чтобы все это изменить, чтобы приспособиться к новому соглашению для замены NULL.
Просмотрите этот FAQ по печально известному NULL-указателю, найденному в C FAQ .
Edit:
Кстати, « Я получаю, что строки с нулевым символом в конце, массивы без длины и некоторые другие вещи плохие» «Это неправильный способ сказать это, поскольку вы путаете эти два ... как Питер Ван Der Linden, автор книги «Эксперт C Программирование - Deep C Secrets», нуль с одним l - это «\ 0», ноль с двумя l - это NULL! Нет такой вещи, как null terminated, которая должна читаться как nul terminated, то есть '\ 0', которая является заполнителем для обозначения конца строки.
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.