如何更新函数内的指针参数?
How can I update a pointer argument inside a function?
所以,我正在处理树,在进行插入时,我需要修改作为参数传递的节点。
发生了什么:
(为简单起见,我将以添加树的第一个节点的情况为例)
在 insert_node_loop
之后我检查了 tree->root
,它仍然指向 NULL
,尽管 node
和 x
都是正确的。
所以,我的想法是,也许 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;
}
所以,我正在处理树,在进行插入时,我需要修改作为参数传递的节点。
发生了什么:
(为简单起见,我将以添加树的第一个节点的情况为例)
在 insert_node_loop
之后我检查了 tree->root
,它仍然指向 NULL
,尽管 node
和 x
都是正确的。
所以,我的想法是,也许 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;
}