我一生中大部分时间都是系统管理员,但最近决定练习一些我的开发知识并尝试一个devop位置.我一直在练习一些C和Python技能,并编写了一些代码,用于在链表中插入一个数字.
void list_insert(struct list *h, int d)
{
struct list *elem = malloc(sizeof(struct list));
elem->data = d;
elem->next = NULL;
if (!h) {
h = elem;
} else {
elem->next = h;
h = elem;
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到这个函数似乎没有改变变量h的外部视图(即传递给list_insert的任何东西),我注意到插入函数末尾的打印似乎有效.所以试图在网上寻找答案,我找不到任何东西,显而易见但我发现大多数列表实现都会有双指针.我改变了我的功能以使用双指针,然后它突然开始工作.有人可以帮助我理解这里发生了什么,因为我知道指针管理是一个重要的概念,我想我理解指针是什么以及它与内存的关系,但我不认为我明白为什么单个指针不会被改变,而双指针确实如此.
谢谢!