C++에 대한 나의 이해가 잘못되었다고 확신 할 수 없다. 나는 1) 모든 0이 아닌 값은 TRUE와 같고 0은 FALSE와 같다. 2) 널 포인터는 0으로 저장됩니다.C++ 제로 (null) 포인터가 false를 반환해야합니까?
그러나이 같은 코드 :
void ViewCell::swapTiles (ViewCell *vc) {
ViewTile *tmp = vc->tile();
[stuff ...]
if (tmp) addTile(tmp);
}
나에게 널 포인터를 역 참조에서 세그먼트 폴트를 제공하지만,
if (tmp != 0) addTile(tmp);
잘 작동합니다. 왜 그런가?
하드웨어 측면에서 null 포인터를 0으로 표시 할 필요는 없지만 컴파일러는이 문제를 해결합니다. –