凯什么欧文 发表于 2022-7-24 17:40:19

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

请问这里要改的明明是头指针指向的地址,传入的应该是library才对啊,为什么要引入头指针(library)的指针去改指针library的地址,难道不是把头指针的地址直接改成插进来的新的结构体的信息域的地址就可以了吗?难道是我理解错了吗?

凯什么欧文 发表于 2022-7-24 17:41:42

我指的是addbook()中应该传入library就行了,是不是哪里理解错了

jhq999 发表于 2022-7-24 19:46:50

凯什么欧文 发表于 2022-7-24 17:41
我指的是addbook()中应该传入library就行了,是不是哪里理解错了

实参不随形参的改变而改变

jackz007 发表于 2022-7-24 19:46:58

本帖最后由 jackz007 于 2022-7-24 19:50 编辑

      如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那么,传入的就必须的指向头指针的指针了。这就意味着调用函数后,头结点是有可能被其他节点替换掉的。

凯什么欧文 发表于 2022-7-24 20:13:23

jackz007 发表于 2022-7-24 19:46
如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那 ...

大佬,可以帮我解释一下我截图里的那几句代码的意思吗,特别是**library和下面addbook(&library)所在的这两行,让我头皮发麻

凯什么欧文 发表于 2022-7-24 20:18:45

jackz007 发表于 2022-7-24 19:46
如果确定在函数内不需要修改头指针,那么,确实,传入头指针就可以了,可是,如果有可能修改的话,那 ...

我现在的理解是library是个二级指针初始化,因为null作为空指针也是个指针,然后当library作为二级指针的时候为什么传入的是二级指针自己的地址去函数里申请一个结构体book,book还是指针,所以library还是二级指针。但是我还是认为这里是要改头指针library的指向,难道不是改头指针指向的值的地址就好了吗?

jackz007 发表于 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

桃花飞舞 发表于 2022-7-24 22:52:15

本帖最后由 桃花飞舞 于 2022-7-24 22:53 编辑

你addbook函数里面怎么实现的?addbook(struct book **library)函数来看函数的形参是二级指针,所以这里传指针的地址&library也才正确吧
页: [1]
查看完整版本: 求助大佬,关于小甲鱼单链表第一节课的问题