2017-04-16 43 views
-1

我试图让NULL或nullptr工​​作在C++中。空检查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); 
} 

我已经尝试设置如果(节点== NULL)到如果(节点== nullptr)。我也试过,如果(!节点),但空检查线不断忽略和传递。

我的代码有点太长,不能包含更多内容,但是您是否会知道导致此类错误的任何常见原因?我在C++中并没有非常使用null,但它似乎是一个相对常见的错误。这就是说,我一直无法在SO上找到这个问题的答案。

+1

你确定变量为空吗? – Barmar

+3

在向别人求助的同时礼貌的一部分,是将你的长代码并减少到[mcve]。如果检查被跳过,那么这可能是一个采用'int *'的函数,如果它为空则返回1,如果不为空则返回0,然后向我们展示给出null时返回0,或直接打印不同的东西在任何情况下,只要我们可以运行并看到。 – chris

+1

您显示的代码是正确的。错误在别的地方。 –

回答

0

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