C ++中的空检查

时间:2017-04-16 22:00:44

标签: c++ null

我正在尝试使用NULL或nullptr在C ++中工作。

假设我正在对二叉树进行顺序遍历,如下所示:

template <class DataType>
void printInorder(someNode<DataType>* node)
{
     if (node == NULL)
          return;

     /* first recur on left child */
     printInorder(node->left);

     /* then print the data of node */
     printf("%d ", node->data);  

     /* now recur on right child */
     printInorder(node->right);
}

我尝试将if(node == NULL)设置为if(node == nullptr)。我也尝试了if(!node),但是null检查行一直被忽略并传递。

我的代码有点太长而无法包含更多内容,但您是否碰巧知道此类错误的常见原因?我在C ++中没有使用过null,但似乎这是一个相对常见的错误。也就是说,我无法在SO上找到这个问题的答案。

1 个答案:

答案 0 :(得分:0)

嗯,你的问题中没有足够的信息来诊断这个问题,但是我会对它进行一次尝试。我最好的猜测是,在创建新节点时,您没有初始化leftright指针。未初始化指针的内容未定义(除非您非常幸运,否则不会是NULL