gpt4 book ai didi

c++ - 如何在不更改cpp地址的情况下分配空间?

转载 作者:太空狗 更新时间:2023-10-29 20:33:44 25 4
gpt4 key购买 nike

例如我现在有一个结构

struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

我先有一个指针,但是我没有给它分配空间,所以就

TreeNode* p;

我想稍后分配空间,例如,在另一个函数中,如下所示

void allo(TreeNode* p, int val){
p = new TreeNode(val);
}
allo(p,5);
// I want to get the original p here

但是这个new 方法改变了原来的p 的地址,我无法再跟踪它了。那么有没有一种不改变地址就可以分配的方法呢?限制是我想把定义和分配分开,就像上面一样,例如在函数外定义,在函数内分配。

最佳答案

如果你想在这个函数之外管理这个指针,你需要通过引用传递参数。否则,指针的拷贝将传递给函数 allo。此复制会更改指针。

像这样尝试(如果我理解问题的本质):

void allo(TreeNode*& ptr, int val)
{
ptr = new TreeNode(val);
}

关于c++ - 如何在不更改cpp地址的情况下分配空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com