树指针变量是否会在其他函数中发生变化?

时间:2015-12-31 22:59:49

标签: c++ tree binary-tree binary-search-tree

我测试了以下C ++代码。似乎根本没有改变。但是,根本不应该将func从3节点更改为节点5?

void func(BSTreeNode* root){
    root=root->right;
}

int main(int argc, const char * argv[]) {
    BSTreeNode* root=new BSTreeNode(3);
    root->right=new BSTreeNode(5);
    func(root);
    cout<<root->val;
    return 0;

}

此外,我一直想知道

之间有什么区别
TreeNode root=NULL;

TreeNode root;

它是第一个实际分配新内存而第二个没有?

1 个答案:

答案 0 :(得分:0)

  1. 您的函数func更新了一个局部变量。未在main中声明的root变量上重新选择赋值。

  2. 在第一种情况下,root被初始化为null。在第二种情况下,root未初始化并指向某些未知内存,可能无效。