C语言中建立动态链表要用双重指针吗?那个双重指针有什么作用?

各位大侠们,麻烦解释的具体一点,我就这里搞不懂啦!
2024-12-18 20:40:33
推荐回答(2个)
回答1:

举个例吧,
假如一个结构:LinkNode
初始化:Initial(LinkNode **p);//这里就是双指针

那么在调用就这样,
LinkNode *p;
Initial(&p);

原理就是,如果你要通过函数来改变某个参数的值,那么就要传该参数的地址进去。
这里p是一个指针,所以要传指针的地址进去,也就是一个指向指针的指针;
初始化函数Initial(LinkNode *(*p));(*p)是指针,*(*p)就是传指针的地址进去了,意思就这样,不知道你听不听得懂。

不管动态还是静态,只要是要通过函数来改变指针类型数据的值,就要用双重指针。

回答2:

楼上讲得不错
再帮补充一下细节:

这样调用
LinkNode *p = NULL;
Initial(&p);

经过 Initial(&p) 的作用后,p就不再是 NULL 了,而是一个真正可用的链表指针