使c ++将指向NULL的指针解释为零

时间:2017-05-06 14:25:42

标签: c++ pointers null

我有这种代码

two->height   = max(two->right->height, two->left->height);

两个> right或two->中的一个可以是指向null的指针,因此程序将会出错。我正在寻找,如果两个>左边是null,它将被转换为零,所以两个>右边将自动为真。

有什么技巧可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您首先要对左右指针执行检查,看看它们是否为空。有点像:

if(two->right == NULL) {
    ...
}
else if(two->left == NULL) {
    ...
}
else {
    two->height = max(two->right->height, two->left->height);
}

有许多方法可以处理指针为NULL。我只选了一个简单的例子。

答案 1 :(得分:1)

这也可以起作用:

two->height   =       max(
                         ( two->right != nullptr ? two->right->height : 0 ),
                         ( two->left  != nullptr ? two->left->height  : 0 )
                         );