Я чувствую, что это может быть странный/глупый вопрос, но вот так...
В вопросе Должен ли NULL в C быть нулем?, было установлено, что указатель NULL
указывает на безадресную область памяти, а также что NULL
равен 0
.
Теперь, предположительно, 32-битный процессор может адресовать 2^32
ячеек памяти.
2^32
- это только количество отдельных чисел, которые могут быть представлены с помощью 32
битов. Среди этих чисел есть 0
. Но поскольку 0
, то есть NULL
, должен указывать на ничто, не следует ли сказать, что 32-битный процессор может адресовать только 2^32 - 1
мест памяти (поскольку 0
не должен быть действительным адресом)?