Когда константа 0 в контексте указателя приобрела свой особый статус?

Как вы знаете, в стандартном современном языке C значение константы 0, используемое в контексте указателя, действует как null- константа указателя , которая преобразуется в зависящее от платформы (и, возможно, даже зависящее от типа) значение нулевого указателя .

Между тем, ранние версии языка C, как описано в Справочное руководство по Си , не делает особого различия между контекстами указателя и целочисленными контекстами, позволяя свободно сравнивать и присваивать целые числа указателям. Если не ошибаюсь, в этой версии C константа 0 не имела особого статуса, а это означает, что присвоение значения константы 0 указателю просто заставит его указывать на физический адрес 0 (точно так же, как присвоение значения 42 указателю указать физический адрес 42).

В ANSI C многое изменилось. Теперь присвоение константе 0 указателю поместит в этот указатель некоторое зависящее от платформы значение нулевого указателя . Значение нулевого указателя не обязательно должно быть представлено физическим значением 0.

Итак, в какой момент истории языка C оно менялось с одного на другое? Включает ли K&R C уже более высокоуровневую концепцию нулевого указателя с константой 0, учитывая ее особый статус? Или K&R C по-прежнему гарантирует физическое присвоение целых чисел указателям даже для константы 0?

14
задан AnT 20 August 2011 в 01:12
поделиться