鱼C论坛

 找回密码
 立即注册
查看: 2868|回复: 1

[已解决]关于小甲鱼讲的二叉树创建的问题

[复制链接]
发表于 2018-3-23 22:44:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
BiTree已经是指向结构体的指针了,在定义函数creatBiTree()时,视频里参数写的是 creatBiTree(BiTree *T),  为什么这里要用二级指针呢?
我没有用二级指针,把函数定义成了creatBiTree(BiTree T),  在main()函数中初始化BiTree T=NULL;  创建完成后先序遍历的时候好像直接就认为根节点是空指针,这是为什么?
最佳答案
2018-3-24 09:55:06
前言:有点啰嗦,如果只是了解看前两段,最后一大段是个补充(纯属个人啰嗦)
如果要修改指针本身的指向就需要将指针取地址,也就是二级指针去改变指针本身的值。
如果没办法理解上面那句话,你可以换个角度想一下:你有一个 int a=1,现在要改变a,让a=2,通过指针改变的话是不是 *p = &a,*p = 2,这样就可以改变了 a 的值为2。同理,一级指针就是 a,要改变 a,那就对它取地址变成指针(二级指针)。
说到这里,就不得不提一下传参的问题,如果只是传递变量,那到被调用的函数里,操作的就不是原本的那个变量了,而是它的一个副本,就算在函数中改变了这个参数的值,当函数返回并不能改变调用该函数的函数中的值。要是想改变就只能传递指针、引用(C++中的),这样传递过去的就是该参数的地址,既然找到了地址,改变值就肯定会影响到变量本身,而不存在了副本。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-24 09:55:06 | 显示全部楼层    本楼为最佳答案   
前言:有点啰嗦,如果只是了解看前两段,最后一大段是个补充(纯属个人啰嗦)
如果要修改指针本身的指向就需要将指针取地址,也就是二级指针去改变指针本身的值。
如果没办法理解上面那句话,你可以换个角度想一下:你有一个 int a=1,现在要改变a,让a=2,通过指针改变的话是不是 *p = &a,*p = 2,这样就可以改变了 a 的值为2。同理,一级指针就是 a,要改变 a,那就对它取地址变成指针(二级指针)。
说到这里,就不得不提一下传参的问题,如果只是传递变量,那到被调用的函数里,操作的就不是原本的那个变量了,而是它的一个副本,就算在函数中改变了这个参数的值,当函数返回并不能改变调用该函数的函数中的值。要是想改变就只能传递指针、引用(C++中的),这样传递过去的就是该参数的地址,既然找到了地址,改变值就肯定会影响到变量本身,而不存在了副本。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 00:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表