Стандарт C ++ определяет, что целочисленная константа 0 преобразуется в нулевой указатель. Это не означает, что нулевые указатели указывают на адрес 0x0 . Это просто означает, что текст «0» превращается в нулевой указатель при преобразовании в указатель.
Конечно, сделать нулевые указатели с представлением, отличным от 0x0
, довольно сложно, поэтому большинство компиляторов просто разрешают 0x0
быть адресом нулевого указателя и гарантируют, что ничто никогда не будет выделено в нуле.
Обратите внимание, что использование этого нулевого преобразования считается плохим стилем. Используйте NULL
(это макрос препроцессора, определенный как 0
, 0L
или некоторая другая нулевая целочисленная константа), или, если ваш компилятор достаточно новый, чтобы поддерживать его, nullptr
.