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

int*_*nt3 0 c++ pointers

我不确定我对C++的理解是否错误.我已经读过1)所有非零值都等于TRUE,零等于FALSE; 2)空指针存储为零.

然而这样的代码:

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

从解除引用空指针给我一个段错误,但是

if (tmp != 0) addTile(tmp);
Run Code Online (Sandbox Code Playgroud)

工作良好.知道为什么吗?

Pav*_*aev 8

对于指针,p并且(p != 0)完全等效.如果它给你一个段错误,那么它不是一个普通的指针,或者问题出在其他地方