代码之家  ›  专栏  ›  技术社区  ›  int3

C++零(null)指针是否应该返回false?

  •  0
  • int3  · 技术社区  · 16 年前

    我不确定我是否理解C++是错误的。我读到1)所有非零值都等于真,零等于假;2) 空指针存储为零。

    但代码是这样的:

    void ViewCell::swapTiles (ViewCell *vc) {
        ViewTile *tmp = vc->tile();
        [stuff ...]
        if (tmp) addTile(tmp);
    }
    

    if (tmp != 0) addTile(tmp);
    

    很好。知道为什么吗?

    2 回复  |  直到 16 年前
        1
  •  8
  •   Pavel Minaev    16 年前

    p (p != 0) 它们完全相等。如果它给您一个segfault,那么要么它不是一个普通指针,要么问题出在别处

        2
  •  1
  •   paul paul    16 年前

    C++ 0指针不一定存储为全零位模式,但是如果编译器认为它是指针,则令牌0总是被解释为0指针,而如果编译器认为它是需要转换类型的整数,则整数0总是被强制为0指针(可能有不同的位模式)。指向不同事物的指针可以有不同的sizeof,也可以是不同于整数的sizeof。但你可以看到这一切是如何进行的。通常清楚的