如何更新函数内的指针参数?

How can I update a pointer argument inside a function?

所以,我正在处理树,在进行插入时,我需要修改作为参数传递的节点。

发生了什么:

(为简单起见,我将以添加树的第一个节点的情况为例)

insert_node_loop 之后我检查了 tree->root,它仍然指向 NULL,尽管 nodex 都是正确的。 所以,我的想法是,也许 node 没有更新参数,只是它的 "local" 变量。但我不知道该怎么办。有没有人能赐教一下?

int insert(TREE* tree, ITEM* item){
   NODE* x = insert_node_loop(tree->root, NULL, item);
   // ...
}

NODE* insert_node_loop(NODE* node, ITEM* item){
   if(node == NULL){
      node = create_node(item);
   }
   // ... 

   return node;
}

你需要使用指向指针的指针,这样你就可以修改它的值:

int insert(TREE* tree, ITEM* item){
   NODE* x = insert_node_loop(&tree->root, NULL, item);
   // ...
}

NODE* insert_node_loop(NODE** node, ITEM* item){
   if(*node == NULL){
      *node = create_node(item);
   }
   // ... 

   return *node;
}