C 为什么在将节点插入头部(linkedlist)时使用双指针?

C 为什么在将节点插入头部(linkedlist)时使用双指针?,c,pointers,linked-list,C,Pointers,Linked List,所以我不太清楚你为什么要通过双指针**phead, 并且只在函数中使用一个指针*phead。 我假设您使用双指针b/c,您正在操作实际的头部,它本身就是一个单指针。 顺便说一下,在函数内部,如果你要这样做 int list_insert_head(node **phead, int data){ node *newnode = malloc(sizeof(node)); if(newnode == 0) return 0; /*memory allocation failed*/

所以我不太清楚你为什么要通过双指针**phead, 并且只在函数中使用一个指针*phead。 我假设您使用双指针b/c,您正在操作实际的头部,它本身就是一个单指针。 顺便说一下,在函数内部,如果你要这样做

int list_insert_head(node **phead, int data){
  node *newnode = malloc(sizeof(node));
  if(newnode == 0)
    return 0; /*memory allocation failed*/
  newnode -> data = data;
  newnode -> next = *phead;
  *phead = newnode; /* what is this?*/
  return 1;

}
为什么不在函数参数中传入*phead


谢谢。

如果你不使用双指针,你会问这个问题。这个问题本身不是重复的,但答案是。;-)所以我就这样结束了这个问题。@DevSolar-我在重复列表中编辑了另一篇文章。现在应该涵盖所有的基础。如果您还没有,请查看不使用双指针时会发生什么。这应该会给你一些想法。
*phead = newnode;