gpt4 book ai didi

c++ - 我可以保证nullptr的地址始终为0吗?

转载 作者:行者123 更新时间:2023-12-02 09:49:46 25 4
gpt4 key购买 nike

我知道NULL始终是0,但是为什么以下代码会打印消息?

#include <iostream>

using namespace std;

int main() {
int* ptr = nullptr;
if (ptr == 0) {
cout << "Does it always work?";
}
return 0;
}

最佳答案

是。

nullptr初始化的指针是空指针。

比较指向文字0(或std::nullptr_t,即nullptr的空指针;这些都是空指针常量),总会产生true

  • http://eel.is/c++draft/basic.fundamental#14
  • http://eel.is/c++draft/conv.ptr#1

  • 但是,您不能使用任何旧表达式来执行此操作;即使 i的整数为1,即使在运行时计算为0, i-i也不是有效的空指针常量。您的
    如果尝试这样做,程序将无法编译。只有文字 0是可以与指针进行比较的有效空指针常量。

    而且,这并不一定意味着它的所有位都为零!就像如何将 bool转换为 int会给您零或一,但是 bool的实际基础位可以是实现喜欢的任何东西。

    最后,请注意您的术语稍微有些偏离。对于 [support.types.nullptr/1] nullptr本身没有可获取的地址

    关于c++ - 我可以保证nullptr的地址始终为0吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61197936/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com