白糖 发表于 2018-5-20 16:07:11

C语言单链表问题

小甲鱼在C语言单链表的视屏里的这个例子中library要双层解引用,说library是指向book结构体指针的指针,这是怎么理解的,希望大佬们能详细解答下,感觉小甲鱼举得例子好难理解

风过无痕丶 发表于 2018-5-20 16:07:12

白糖 发表于 2018-5-20 17:24
意思是指针变量library本来指向的就是节点的地址,所以要修改library指向的值才要双层解引用,是这样吗?

我们先说main函数里的library, 它是个什么,library是个指针,他不是结构体Book的载体,它只有四字节的内存空间,存放不下那么大的一个结构体内容,但是他可以指引你去找到这个结构体的载体

然后我们再说addBook的形参library 他是一个二级指针! 他存放的应该是什么! 应该是main函数里面的那个library,了解了这个,我们再来说解引用   形参library 一层解引用 是不是就是main函数里面的library指针的地址!那么两层解引用是不是就是结构体的地址了。。你找到结构体的地址了,是不是就可以为所欲了,。。。。

风过无痕丶 发表于 2018-5-20 17:01:58

int a;
int *p = &a;// 一级指针,用于存储数据的地址
*p; // 等于变量a的值
//=================================
int **pp= p// 二级指针, 二级指针用于存储一级指针的地址
*pp; // 等于 指针p的地址
**pp // 等于 变量a的值

白糖 发表于 2018-5-20 17:24:55

风过无痕丶 发表于 2018-5-20 17:01


意思是指针变量library本来指向的就是节点的地址,所以要修改library指向的值才要双层解引用,是这样吗?

幻夜风暴 发表于 2018-5-20 17:32:40

#include<cstdio>
using namespace std;
int main()
{
int a;
int *p = &a;// 一级指针,用于存储数据的地址
*p; // 等于变量a的值
//=================================
int **pp= p// 二级指针, 二级指针用于存储一级指针的地址
*pp; // 等于 指针p的地址
**pp // 等于 变量a的值
}

白糖 发表于 2018-5-20 18:17:33

风过无痕丶 发表于 2018-5-20 17:52
我们先说main函数里的library, 它是个什么,library是个指针,他不是结构体Book的载体,它只有四字节的 ...

感觉我自己指针学的很乱,绕来绕去,再和其他的知识点一结合好不容易明白的东西又迷糊了,多写点代码也不知道会不会好些,主要是现在想考研跨考计算机,时间紧练得少,要学的东西又太多,结果越学越没信心{:5_99:}
页: [1]
查看完整版本: C语言单链表问题