【问题标题】:How can I update a pointer argument inside a function? [duplicate]如何更新函数内的指针参数? [复制]
【发布时间】:2015-12-07 19:34:10
【问题描述】:

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

发生了什么:

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

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

【问题讨论】:

    标签: c pointers tree


    【解决方案1】:

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

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

    【讨论】:

    • 哇,我之前尝试过,但搞砸了额外的指针。 非常感谢!
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    相关资源
    最近更新 更多