Как известно, в стандартном современном языке C значение константы 0, используемое в контексте указателя, действует как константа нулевого указателя, которая преобразуется в значение нулевой указателя на конкретную платформу (и, возможно, даже для конкретного типа).
Между тем, ранние версии языка C, как описано в Справочное руководство по C, не делали большой разницы между указателем и целочисленные контексты, позволяющие свободно сравнивать и присваивать целые числа указателям. Если не ошибаюсь, в этой версии C константа 0 не имела особого статуса, то есть назначение значения константы 0 указателю просто указывало бы на физический адрес 0 (точно так же, как присвоение значения 42 указателю было бы укажите его физический адрес 42).
В ANSI C вещи значительно изменились. Теперь присвоение константы 0 указателю поместит в этот указатель значение нулевой указателя для конкретной платформы. Значение Null-указателя не должно быть представлено физическим значением 0.
Итак, в какой момент в истории языка C это изменилось от одного к другому? Разве K & R C уже включил концепцию нулевого указателя более высокого уровня с константой 0, учитывая ее особый статус? Или K & R C по-прежнему гарантирует физическое назначение целых чисел указателям даже для константы 0?