仅有的倔强 发表于 2018-8-16 10:16:04

关于指针的指针的问题

head 是头指针

因为要对该链表实现 头插法 建立链表

为什么 在写方法时的参数 是 指针的指针

void addBook(struct Book **library)
{
}


因为不是要修改head 指针的指向吗, 直接将新的结点的地址赋值给 head 指针就可以哇, 为什么要通过 指针的指针 来修改head 里存放的指针呢。

无符号整形 发表于 2018-8-16 10:20:41

在主函数中可以很方便地这样做,但是在别的函数中就不方便了。(无法修改,head是指针)
假如真的这样做,移植性会很差!
而且,在函数中可以改变拷贝实参吗?很明显是不可以的。

claws0n 发表于 2018-8-16 11:06:20

建议往大体看。假设 int *p = &a; 如果 p 改变了,是不是直接作用到 a 上面?你只是想添加新的书册,改变的是它们存储的位置而已,不是要改变它们的值。因此,设一个指针来改变它们的指针~

仅有的倔强 发表于 2018-8-16 11:34:01

无符号整形 发表于 2018-8-16 10:20
在主函数中可以很方便地这样做,但是在别的函数中就不方便了。(无法修改,head是指针)
假如真的这样做, ...

还是懵懵的

无符号整形 发表于 2018-8-16 11:46:56

仅有的倔强 发表于 2018-8-16 11:34
还是懵懵的

除非head是全局变量 否则修改不了啊。(尝试修改拷贝的形参)

claws0n 发表于 2018-8-17 16:34:22

仅有的倔强 发表于 2018-8-16 11:34
还是懵懵的

head 是没有改变的,改变的只有 head 的指针~ 看3楼

仅有的倔强 发表于 2018-8-17 21:42:11

claws0n 发表于 2018-8-17 16:34
head 是没有改变的,改变的只有 head 的指针~ 看3楼

不好意思 现在才回复
这几天一直在看数据结构

head 不是头指针吗就是 地址呀。
既然它将head 头指针 的指针的指向改变那就赋予给 head 指针一个新的结点的 地址, 不就改变了指针的 指向了吗

claws0n 发表于 2018-8-17 23:25:30

仅有的倔强 发表于 2018-8-17 21:42
不好意思 现在才回复
这几天一直在看数据结构



头指针不是地址,指针所存储的资料才是地址~~
指向 head 的指针是没有变的,改变的是 head->next 指针
head 不可能改变,领队不变,新元素插到领队的后面 >> 头插法
复习一下,消化一下。还有不清楚的地方,欢迎提问~

仅有的倔强 发表于 2018-8-18 07:52:53

claws0n 发表于 2018-8-17 23:25
头指针不是地址,指针所存储的资料才是地址~~
指向 head 的指针是没有变的,改变的是 head->next 指针
...

不好意思不小心点了反对的撤不回了

嗯嗯嗯 貌似还是懵懵懂懂的就暂且理解 要改变 head 里面存放的 地址,就是改变 头指针的 指向?
页: [1]
查看完整版本: 关于指针的指针的问题