c语言二叉树的创建和先序遍历,为什么我定义了一个结构体指针,在作为形参的时候还要在前面加一个*的符号。
BiTree t 和 Bitter *t 有什么不同?
void CreateBiTree(BiTree *t); BiTree 本来就是指针了,但是这里的 t 要发生修改,所以需要用指针,用"&"引用也是可以的,理解为指向指针的指针。
(*t)->data=ch;因为 t 是BiTree的指针的指针,所以要先取一次 * 号,得到是指针,在用 -> 才能取到 data。
因为CreatBiTree()
函数需要把新创建的节点指针传给父节点中,所以需要BiTree*
类型这样才能修改父节点的lchild
, rchild
*的意思其实就是指针(指向的是地址), 你如果不用*,那其实是按值传递(默认是拷贝传递,会复制一份),对函数传参的原变量没法生效操作。
函数的按值传值,引用传值,地址传值,指针传值这个知识点理解一下。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!