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

时间:2015-12-07 19:34:10

标签: c pointers tree

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

发生了什么:

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

insert_node_loop之后,我检查tree->root并且它仍然指向NULL,即使nodex都是正确的。 所以,我的想法是,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;
}

1 个答案:

答案 0 :(得分:3)

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

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;
}