Crossoads 2024-09-30 20:46 采纳率: 100%
浏览 11
已结题

C++中null与nullptr


null == nullptr

在C++中为什么可以这样进行运算?

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-09-30 20:48
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    在C++中,"null"和"nullptr"都是指一个值为0的指针。然而,它们并不是同一个东西。

    "null"指的是没有任何实际意义的数据,它只是C++中的一个常量,用来表示一个空指针。例如,在大多数情况下,一个空指针被认为是NULL,这意味着它没有值,也不能指向任何其他值。

    "nullptr"是C++17引入的一个新的类型,用于代替void*。它是空指针的一种更安全的形式。无论你尝试使用某个指针,如果你给它赋值为nullptr,那么它的值就是nullptr,而不是NULL。

    在C++中,你不能直接将NULL与nullptr相比较。但是,你可以通过比较两个指针是否都为空来判断NULL和nullptr的差异。如果两个指针都不为空,那么它们就是相同的;否则,它们就不同。

    以下是针对以上问题的一些建议:

    1. 对于空指针,建议使用"nullptr"代替,以增加安全性。
    2. 如果你不确定某个指针是否为NULL,可以先检查它是否为空,然后再做决定。例如:
    if (p == nullptr) {
      // p为空,因此它是NULL
    }
    
    1. 注意,虽然你可以比较两个指针是否都为空,但这样做并不推荐。因为这可能会导致意外的结果。最好的做法是始终从当前值开始遍历数组或容器,而不仅仅是检查它们是否为空。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 9月30日