二级指针和二叉树创建的问题

二叉树创建的二级指针的原理

关于二叉树创建需要用到二级指针,这里主要是函数的参数传入的有点绕弯。
下面画个草图 示意一下为什么创建的时候要用二级指针
在这里插入图片描述

在这里插入图片描述

定义一个 A和C变量,他们都有各自分配的地纸。
int A = 1,C = 10;
定义一个指针p指向A;
int *p = &A;
二叉树的二级指针主要是针对 在函数中让p从指向A改为指向C,像下图一样;
在这里插入图片描述

不使用函数调用固然好操作,但是涉及到使用函数,就有参数复制的问题,如下图所示,
此处 定义一个函数
int A = 1,C = 10;
int *p = &A;
main
{
fun§;
}
void fun(int *p)
{
p = &C
}
这里的fun内部的p只是全局变量p的一个复制 ,在下图中用p’表示。
在fun内部怎么操作p’,函数结束后全局变量p还是指向A的地址块。
在这里插入图片描述

那么就需要二级指针,在函数调用时,让指针的指向更改指向的地方。

int A = 1,C = 10;
int *p = &A;
main
{
fun(&p);
}
void fun(int **q)
{
*q= &C;
}
这时候 采用二级指针进行调用,fun函数进行复制,得到一份q’的复制,此时可以直接操作p指针进行更改指向C地址块,当函数调用结束后q’消失,q仍然指向p,p却已经转向了C的地方。
在这里插入图片描述

同理二叉树的创建也是如此操作二级指针。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值