if(指针== NULL)和if(!指针)之间有什么区别?

gar*_*t98 3 c++ pointers

使用之间有什么区别:

if( pointer == NULL) 
Run Code Online (Sandbox Code Playgroud)

if(!pointer)
Run Code Online (Sandbox Code Playgroud)

我关注两者在以下几点上的
区别:1.它们对编译器有何不同?如果是,那怎么样?
2.两者中哪一种是一般用途的推荐编码方式,为什么?
你能解释一下编译器如何"看到"NULL.

编辑:为简单起见,指针的类型为int*.

Bat*_*eba 5

假设pointer是一个指针类型,if (pointer == NULL)是不合时宜和不好的C++,因为C++中的空指针值是nullptrC++中的类型 nullptr_t.

if (!pointer)优选的成语.

  • [ES.87:不要在条件中添加冗余==或!=](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-if) (7认同)
  • 有些人说隐式bool转换是可怕的,而`pointer == nullptr`是更受欢迎的习语.没有任何统计数据或民意调查来支持它我不会认为我的意见是普遍接受的. (5认同)