Да.
Указатель, инициализированный из nullptr
, является нулевым указателем.
Сравнение нулевого указателя с литералом 0
(или с std::nullptr_t
, что nullptr
, вместе они константы нулевого указателя ) дают true
, всегда.
Вы не можете сделать это с любым старым выражением; даже если целое число i
равно 1, i-i
не является допустимой константой нулевого указателя, несмотря на оценку 0 во время выполнения. Ваша программа не скомпилируется, если вы попытаетесь это сделать. Только литерал 0
является допустимой константой нулевого указателя, которую можно сравнить с указателями.
Кроме того, это не обязательно означает, что все биты равны нулю! Очень похоже на то, как преобразование bool
в int
дает вам ноль или единицу, но действительные базовые биты bool
могут быть любыми для реализации.
Наконец, обратите внимание, что ваша терминология немного отличается ; за [support.types.nullptr/1]
, nullptr
сам не имеет адреса, который может быть взят