鱼C论坛

 找回密码
 立即注册
查看: 2386|回复: 8

S1E46单链表问题

[复制链接]
发表于 2019-10-10 18:00:24 | 显示全部楼层 |阅读模式

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

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

x
定义释放内存函数时用的
void releaseLibrary(struct Book **library)
{
        struct Book *temp;

        while (*library != NULL)
        {
                temp = *library;
                *library = (*library)->next;
                free(temp);
        }
}
其中->的作用我自己理解为结果返回结构体(*library)中next变量的地址,但是这样理解*library并不是被赋值为next的值而是next的地址,不知道哪里思路出来错,求指导。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-10 18:21:17 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-10 18:26 编辑

      通过结构体变量访问成员时,使用 . 操作符,例如,book . next,book 必须是一个结构体变量;通过结构体指针访问成员时,使用 -> 操作符,例如,pbook -> next,pbook 必须是一个指向结构体的指针。

      在本例中,struct Book ** library,library 是一个指向结构体指针的指针,那么,* library 就是一个指向结构体的指针。之所以传入 struct Book ** library,其目的是希望把函数中对 * library 的修改反馈到主函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-10 22:15:59 | 显示全部楼层
jackz007 发表于 2019-10-10 18:21
通过结构体变量访问成员时,使用 . 操作符,例如,book . next,book 必须是一个结构体变量;通过结 ...

那next是指针嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-10 22:19:37 | 显示全部楼层
jackz007 发表于 2019-10-10 18:21
通过结构体变量访问成员时,使用 . 操作符,例如,book . next,book 必须是一个结构体变量;通过结 ...

pbook -> next整体返回什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-10 22:40:43 | 显示全部楼层
水深 发表于 2019-10-10 22:19
pbook -> next整体返回什么

       next 本身是指针,只是它必须搭载在某一个结构体上,pbook -> next 是一个与 pbook 相同类型的变量,它们都是指向自身结构体类型的指针变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-11 15:05:49 | 显示全部楼层
jackz007 发表于 2019-10-10 22:40
next 本身是指针,只是它必须搭载在某一个结构体上,pbook -> next 是一个与 pbook 相同类型的变 ...

我想问的是整体返回什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-11 15:44:56 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-11 15:50 编辑
水深 发表于 2019-10-11 15:05
我想问的是整体返回什么


      什么叫整体?

      pbook -> next 看起来似乎很复杂,但实际上它和 a , b , c  等其它的任何一个普通变量一样,就是一个变量而已,没有什么特别的地方。如果 pbook 指向第一个节点,那么,pbook -> next 指向第二个节点,pbook -> next -> next 又指向第 3 各节点,直到最后那个节点的 next 值为 NULL,链表就无法继续追踪了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-12 20:11:49 | 显示全部楼层
没有这么复杂,你看下结构体中next是什么就行了,一个指针(*p)既可以代表一个值,也可以代表地址(指针的指针),没有什么纠结的,存在即合理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-13 08:46:45 | 显示全部楼层
matrixgadener 发表于 2019-10-12 20:11
没有这么复杂,你看下结构体中next是什么就行了,一个指针(*p)既可以代表一个值,也可以代表地址(指针的 ...

我疑惑的点是因为我们用scanf的时候第二个参数一般应该是指针,而我们给对象传递值的时候它需要放在第二个参数,这样我觉得我用了—>的话返回的是指针,但在其他情况下又有种变量名的感觉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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