动态分配内存与二级指针

         在做二叉树实验时,当然,开始并不是很懂,所以照着书上码,码完看看效果后,再学习代码。

         当看到先序创建二叉树时,发现函数的参数是bitree &t,而bitree本来就是指针了,那这个参数是啥啊,对指针取地址,指针的指针。。。ohno,强迫症是病啊,一直纠结着,发现凡是涉及创建二叉树的都会有这种参数,而对二叉树的操作函数的参数都是这样的参数bitree t。然后就是各种纠结,完全想不通,有必要吗,有bitree t应该就够了啊,想想创建二叉树的过程,没有关系啊,只需节点的指针就行了。还是问问度娘,开始并没有找到很好的答案,因为不知道怎么描述这个问题,事实告诉我们,搜索也是要有技巧的,但最终还是找到了,看来也有不少人纠结啊。

         是这样的,这里和分配内存有关,不能用函数的指针参数去申请动态内存,至于原因,有点复杂的样子,编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p申请了新的内存,只是把_p所指的内存地址改变了,但是p丝毫未变,那么对_p指向的内容做出修改时,对p是完全没作用的,因为地址变了。难怪我没加&时,没有树输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值