【问题标题】:Return pointer from function to main从函数返回指针到main
【发布时间】:2015-07-18 00:11:49
【问题描述】:

我想返回一个指向我的主函数的指针值,但它只在本地工作,并且 root = NULL 的值在函数插入之外保持不变。

   node *insert(int number,   node *root ){



        if(root==NULL){
            root = new node;
            root->key = number;
            printf("%d", number);
            return root;
        } }

【问题讨论】:

  • 只能在本地工作是什么意思?这个函数怎么调用?
  • 插入(数字,根);在函数内部 root = new 节点但是当我添加 insert(number,root,current); printf("%d",root); root 仍然是 NULL 但我已经声明 root = new node;

标签: pointers null


【解决方案1】:

参数变量实际上是堆栈变量,由函数的调用者初始化。

当你分配“root=新节点;”您正在对本地“root”进行操作

如何从 main() 调用 insert()? 你可以:

node* newRoot = insert(x, oldRoot);

比“新节点”将分配给newRoot。你甚至可以:

oldRoot= insert(x, oldRoot);

比“新节点”会分配给oldRoot

但是你以后删除所有这些会很麻烦......

【讨论】:

    【解决方案2】:

    注意root 正在返回,所以在main() 中你应该这样称呼它:

    node *root = insert(4711, nullptr);
    

    我使用了nullptr,因为这显然是 C++,我相信这就是它今天的拼写方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-03
      • 2011-12-06
      • 2019-08-14
      • 1970-01-01
      • 2010-12-25
      • 2015-11-02
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多