C++中的空指针

roo*_*kie 2 c++

大家好,我对C++有一些疑问,你真的喜欢用什么

int* var = 0;

if(!var)...//1)
or
if(var == 0)..//2)
Run Code Online (Sandbox Code Playgroud)

优缺点都有什么?提前致谢

fre*_*low 9

我更喜欢if (!var),因为那样你就不会意外分配var,而且你不必在0和之间选择NULL.


And*_*ong 5

我一直被教导使用if (!var),似乎我读过的所有惯用的C(++)都遵循这一点.这有一些很好的语义:

  • 没有意外的任务
  • 你正在测试某些东西的存在(即如果它是NULL).因此,您可以将语句读作"如果var不存在"或"如果未设置var"
  • 如果var是一个布尔值,则会严格地映射到你惯用的内容(bool在C中不可用,但人们仍然模仿他们的使用)
  • 与前一点类似,它与谓词函数调用紧密相关,即. if (!isEmpty(nodeptr)) { .. }