永发信息网

关于创建二叉树的C语言 为什么void Creat_Bintree(Bintree *root)非要定义一个带指针的?

答案:2  悬赏:80  手机版
解决时间 2021-11-13 13:35
  • 提问者网友:美人性情
  • 2021-11-12 17:24
关于创建二叉树的C语言 为什么void Creat_Bintree(Bintree *root)非要定义一个带指针的?
最佳答案
  • 五星知识达人网友:迷人又混蛋
  • 2021-11-12 18:35
因为你要更改的是指针本身,因此必须传递指针的地址
Preorder1之所以可以传递对象,是因为它不需要更改对象
举个简单的例子, 比如有一个函数
void f(int* p)
{
p++;
}
int a[2]={0,1} ;
int* p=a;
f(p);
执行到这里, p依然指向a[0] 而不是a[1]
因此实际需要这样写
void f(int** pp)
{
(*pp)++;
}
int a[2]={0,1} ;
int* p=a;
f(&p);追问但是如果做(*p)++,*p的值就改变了,这是否意味着p的地址也改变了吗追答p的地址当然没有改变,改变的是p所指向的那个地址上的值追问那在create函数里头那个语句需要改变所定义指针的地址?如果写在主函数里面是否就可以不用二级指针了?追答先弄清楚几个概念
&p这个叫指针变量本身的地址
p 这个叫指针所指的地址
*p 这个叫指针所指的地址上的值
想要改变p,就得把&p当作参数
void Creat_Bintree(Bintree *root)

这个函数需要改变root,因此传递的是root的地址追问如果前序遍历也采用一个二维指针的形参,这样是否成立,我试过了,运行错误,这是为什么啊,我传地址进去,但是没有改变啊追答void Preorder1(Bintree* t)
{
if(*t!=NULL)
{
printf("%c",(*t)->data);
Preorder1((*t)->lchild);
Preorder1((*t)->rchild);
}
}
这样也是可以的,只是没有必要
全部回答
  • 1楼网友:迟山
  • 2021-11-12 20:14
目前在Android手机上,还没有统一的获取
ROOT的方法,各个机型在获取ROOT权限
时的操作要点也不尽相同。目前主流的一键
ROOT软件有
Z4ROOT,UniversalAndroot,visionaryplus,GingerBreak
等,到网上搜索下载这些软件后安装,按照
提示操作就可以了。
以下是比较常见的一种方法:
1.下载upd-1.zip压缩文件(到网上找),
不需要解压,放入sd卡中。
2.关机,同时按住"home+开机键"开机。
3.出现蓝色的英文字母,用音量键选择到第
二个(apply update from sdcard),按
home键确认。在sd卡的目录中找到你刚才
放入的upd-1.zip并按home键。
4.稍等会回到原来的界面,选择第一个
(reboot system now),按一下home
键。
5.重启后,root就成功了。
希望这些对你有帮助。
不管怎么刷机都是有风险的,当然选择是你
自己做出的所以后果也是自负。
root后手机拥有更大权限,可以装一些需要
高权限的软件,也可以删除一些系统没用的
软件,更可以app2SD,释放出手机自带的
那点可怜的存储,让手机运行速度更快。
豌豆荚这个软件还不错,但它是一款在电脑
上运行的软件,所以打开你的电脑连上数据
线吧!
如果对你有帮助希望不吝给分,谢谢!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯