检查指针的可空性:!指针或指针== nullptr?

Jul*_*mur 4 c++ pointers

假设我有一个指针:int *pointer.

如果我想测试它的可空性,我应该这样做:

bool nullability = !pointer;
Run Code Online (Sandbox Code Playgroud)

或者:

bool nullability = (pointer == nullptr);
Run Code Online (Sandbox Code Playgroud)

两个表达都是等价的吗 如果没有,为什么以及副作用是什么?

ala*_*ain 8

两者都是等价的,因为nullptr保证false在转换为布尔值时转换为.

从N4296:

4.12布尔转换
1算术,无范围枚举,指针或指向成员类型的指针的prvalue可以转换为bool类型的prvalue.零值,空指针值或空成员指针值转换为false; 任何其他值都转换为true.对于直接初始化(8.5),std :: nullptr_t类型的prvalue可以转换为bool类型的prvalue; 结果值为false.