0

我正在参加一个讲座,它显示了一些代码,可以像这样递归地打印出二叉搜索树

void printTree(node *t){
    if(t!=NULL){
        printTree(t->left);
        cout<<t->key<<endl;
        printTree(t->right);
     }
 }

我明白它在做什么,但我不明白指针。该函数正在传递一个指向节点的指针,但在“cout”行中,它试图访问节点结构中的键值而不首先取消引用它。我的意思是,不应该是这样的

cout<<(*t)->key<<endl;

反而?

4

2 回答 2

6

实际上,->是一个解引用运算符。您可以做出选择:

cout<<t->key<<endl; 或者 cout<<(*t).key<<endl;

于 2013-06-22T15:37:30.943 回答
0

但绝对不是“(*t)->key”——这将是一个双重 deref,如果不是崩溃,可能是编译错误。

于 2013-06-22T18:22:06.947 回答