在数据结构中当创建二叉树时候void CreateBiTree(BiTree &T);传参数为什么不能用指针而要用引用或指针的指针

记得以前我们刚上数据结构,创建二叉树的时候,void CreateBiTree(BiTree &T);参数传递的是一个指向结构体指针的引用,有一个人问过老师,他说要改变值必须要用引用,我感觉他这里根本就没跟我们讲清楚,为什么要用指针的引用呢?

后来我问了别人,自己想了一下,在C语言中,可能接触过这样一个例子,通过函数交换两个变量的值,然后打印出来,我们知道这个通过指针是可以做到的,当然引用也是可以的。指针能够改变原来两个变量的值,为什么到这里就不行了呢void  CreateBiTree(BiTree T),同样我这里也是传递的是一个指针,而不能改变其值。

void CreateBiTree(BiTree T);刚开始创建的时候,实参传进来的指针是为空的,然后形参接受到实参传进来的空指针,然后为形参分配内存空间,函数执行完毕,释放为函数分配的内存空间,形参也随之回收,这时候实参仍为空。所以在这里要改变指针的值才行,而要改变指针的值必须要用指针的指针或指针的引用两种方法都可以。

而void DeleteChild(BiTree T,BiTree p,int LR);这里用指针就够了,BiTree T这里传给形参本来就是有值的,不为空,当实参传给形参时,对形参改变也会影响到本体。仅个人看法,如果有不正确的地方请指出,相互学习,谢谢!

你可能感兴趣的:(数据结构二叉树)