BST通过指针更新传递

时间:2014-01-26 17:16:12

标签: c++ pointers

我想知道为什么在运行以下代码时我的指针不会更新:

 void bst_insert(Node* root, int data) {

  if (root == NULL) {
    Node* n = new Node();
    n->data = data;
    n->right = NULL;
    n->left = NULL;
    root = n;
    cout << root->data << endl;
    return;
  }

主:

int main() {

  Node* root = NULL;
  bst_insert(root, 5);
  cout << root << endl
}

我希望main中的root指向new Node,但它仍然是NULL。为什么呢?

1 个答案:

答案 0 :(得分:4)

因为您按值传递指针,所以您要更改bst_insert中的本地指针。改为传递对指针的引用:

void bst_insert(Node*& root, int data) 
                     ^