鱼C论坛

 找回密码
 立即注册
查看: 1958|回复: 7

[已解决]求助大佬,关于小甲鱼单链表第一节课的问题

[复制链接]
发表于 2022-7-24 17:40:19 | 显示全部楼层 |阅读模式

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

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

x
请问这里要改的明明是头指针指向的地址,传入的应该是library才对啊,为什么要引入头指针(library)的指针去改指针library的地址,难道不是把头指针的地址直接改成插进来的新的结构体的信息域的地址就可以了吗?难道是我理解错了吗?
最佳答案
2022-7-24 22:34:59
本帖最后由 jackz007 于 2022-7-24 22:39 编辑
凯什么欧文 发表于 2022-7-24 20:18
我现在的理解是library是个二级指针初始化,因为null作为空指针也是个指针,然后当library作为二级指针的 ...

       struct Book * library = NULL   ; // library = NULL
       addBook(& library)             ; // library 的值将在 addBook() 中被修改,就是说,调用过此函数后, library 的值将不再是 NULL,所以,传入函数的是作为变量 library 的内存地址 & library
图片1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-24 17:41:42 | 显示全部楼层
我指的是addbook()中应该传入library就行了,是不是哪里理解错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-24 19:46:50 | 显示全部楼层
凯什么欧文 发表于 2022-7-24 17:41
我指的是addbook()中应该传入library就行了,是不是哪里理解错了

实参不随形参的改变而改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-24 19:46:58 | 显示全部楼层
本帖最后由 jackz007 于 2022-7-24 19:50 编辑

      如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那么,传入的就必须的指向头指针的指针了。这就意味着调用函数后,头结点是有可能被其他节点替换掉的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-24 20:13:23 | 显示全部楼层
jackz007 发表于 2022-7-24 19:46
如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那 ...

大佬,可以帮我解释一下我截图里的那几句代码的意思吗,特别是**library和下面addbook(&library)所在的这两行,让我头皮发麻
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-24 20:18:45 | 显示全部楼层
jackz007 发表于 2022-7-24 19:46
如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那 ...

我现在的理解是library是个二级指针初始化,因为null作为空指针也是个指针,然后当library作为二级指针的时候为什么传入的是二级指针自己的地址去函数里申请一个结构体book,book还是指针,所以library还是二级指针。但是我还是认为这里是要改头指针library的指向,难道不是改头指针指向的值的地址就好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-24 22:34:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-7-24 22:39 编辑
凯什么欧文 发表于 2022-7-24 20:18
我现在的理解是library是个二级指针初始化,因为null作为空指针也是个指针,然后当library作为二级指针的 ...

       struct Book * library = NULL   ; // library = NULL
       addBook(& library)             ; // library 的值将在 addBook() 中被修改,就是说,调用过此函数后, library 的值将不再是 NULL,所以,传入函数的是作为变量 library 的内存地址 & library
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-24 22:52:15 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-7-24 22:53 编辑

你addbook函数里面怎么实现的?addbook(struct book **library)函数来看函数的形参是二级指针,所以这里传指针的地址&library也才正确吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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