假如我有一个像这样定义的二叉树节点:(并且假设所有成员都是公共的以方便......)
class node
{
public:
int v;
node* left;
node* right;
//member functions....
}
我有两个名为A和B的节点指针并运行以下脚本:
node* A;
node* B;
A->left = B;
A->left = NULL;
这是否会使B指向NULL或仅更改A的左子指针(即此 - >在* A中左侧)并且B仍然保留它用于指向的内容?
如果前一种情况属实,我怎样才能在不影响B的情况下改变A->左边的值?
TIA!
答案 0 :(得分:3)
不,它没有。 A->left = NULL
仅更改A->left
的值。
注意:我假设A
和B
已经以某种方式初始化,因为如果你运行
node* A; //uninitialized
node* B; //uninitialized
A->left = B;
A->left = NULL;
你会崩溃的。
更新/澄清:我的意思是,最有可能的。但即使它会起作用(例如,由于你的惊人(缺乏)运气,你可能会得到一个指向有效内存区域的垃圾值),它也不会有任何好处。如果你得到一个有效的记忆区域,写在那里会带来一些理想的结果,立即停止调试,去附近的赌场,你有一个幸运的日子:)