【问题标题】:For a NULL pointer, should I use NULL or 0? [duplicate]对于 NULL 指针,我应该使用 NULL 还是 0? [复制]
【发布时间】:2009-03-30 02:14:38
【问题描述】:

复制

Do you use NULL or 0 for pointers in C++?

在处理NULL 指针时,可以这样做

if(ptr != NULL){ ... }

or this

if(ptr != 0){ ... }

C++ 中是否有理由偏爱其中之一?

【问题讨论】:

标签: c++ pointers null


【解决方案1】:

使用NULL,因为它在语义上表明了你的意思。

请记住,编程的目的不是告诉计算机要做什么。重点是告诉其他人你要告诉计算机做什么。

【讨论】:

  • “重点是告诉其他人你要告诉计算机做什么”——太棒了!但我更喜欢使用0,这是一个众所周知的 C++ 习语,不应该让任何人感到困惑!
  • NULL 仅在您从 C 背景来到 C++ 时才有意义。
  • 在实现模板化代码时,NULL 会给您带来麻烦。 0 适用于模板化为指针的值以及其他类型;当为非指针类型实例化模板时,NULL、OTOH 可能会导致编译错误。 (否则我同意让代码将您的意图传达给人类读者)
【解决方案2】:

两者都行;也一样:

if (ptr) { ... }

明确检查 NULL 表明了 if 的意图,因此,我认为它有助于检查使用的可维护性:

if (ptr != NULL) { ... }

【讨论】:

  • 为什么这被否决了?我看不出有什么问题。
  • @Frank 可能是因为有些人不同意第二部分。就我个人而言,我发现第一个版本更容易阅读,内容相同但不那么冗长。
【解决方案3】:

if(ptr != NULL) 比 if(ptr != 0) 读起来更好。因此,虽然您可以使用后者节省 3 次击键,但如果您使用前者,您将帮助您的同事在阅读您的代码时保持理智。

【讨论】:

    【解决方案4】:

    没关系。每个专业程序员都会知道ptr = 0if( !ptr ) 是什么意思,并且完全符合标准。所以,做你想做的事,但无论你做什么,始终做同样的事情。

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 1970-01-01
      • 2019-06-09
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2013-05-01
      相关资源
      最近更新 更多