c语言结构体指针作为形参时为什么还要在前面加一个*

c语言二叉树的创建和先序遍历,为什么我定义了一个结构体指针,在作为形参的时候还要在前面加一个*的符号。

img

img

BiTree t 和 Bitter *t 有什么不同?

void CreateBiTree(BiTree *t); BiTree 本来就是指针了,但是这里的 t 要发生修改,所以需要用指针,用"&"引用也是可以的,理解为指向指针的指针。
(*t)->data=ch;因为 t 是BiTree的指针的指针,所以要先取一次 * 号,得到是指针,在用 -> 才能取到 data。

因为CreatBiTree()函数需要把新创建的节点指针传给父节点中,所以需要BiTree*类型这样才能修改父节点的lchild, rchild

*的意思其实就是指针(指向的是地址), 你如果不用*,那其实是按值传递(默认是拷贝传递,会复制一份),对函数传参的原变量没法生效操作。

函数的按值传值,引用传值,地址传值,指针传值这个知识点理解一下。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632