SLNode **head 作为形参,当调用函数时,先对head中存放的地址进行拷贝,再对该拷贝值进行后续的操作:*head=malooc(sizoof())。
代码表示对拷贝值解引用,去到下一级内存中存放堆内存的地址。当函数调用结束时,拷贝值被回收,但此时拷贝值指向的内存中已经成功放入地址。
在插入函数中,形参为SLNode *head ,表示对二级指针head解引用一次,去到下一级内存(此时内存中是之前通过拷贝值放入的堆内存地址),对内存中的地址同样进行一次拷贝。利用此次的拷贝值,去到堆内存中修改数据,和修改next指针。同样在插入函数调用结束后,拷贝值被回收,但是拷贝值指向的
堆内存内容已经成功修改了。
这是我自己的理解,参考一下,如果有理解不到位还请指出,互相学习
你好,请问这是哪一版的数据结构,可以回复一下吗
不知道你这个问题是否已经解决, 如果还没有解决的话:因为初始化的时候,需要改变这个指针的指向
SLNode * list = NULL; //指向 NULL
ListIntiate(list);
//此时list指向有效内存了
而插入并不改变指向