我想知道为什么在运行以下代码时我的指针不会更新:
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
。为什么呢?
答案 0 :(得分:4)
因为您按值传递指针,所以您要更改bst_insert
中的本地指针。改为传递对指针的引用:
void bst_insert(Node*& root, int data)
^