gpt4 book ai didi

c++ - 返回一个本地指针

转载 作者:可可西里 更新时间:2023-11-01 18:28:40 25 4
gpt4 key购买 nike

struct node
{
Item item; node *l, *r;
node(Item x) {item = x; l = 0; r = 0;}
};

typedef node* link;
link max(Item a[], int l, int r)
{
int m = (l+r)/2;
link x = new node(a[m]);
if (l==r) return x; // return a local pointer
x->l = max(a, l, m);
x-r = max(a, m+1, r);
Item u = x->l->item, v = x->r->item;
if (u>v) x->item = u;
else x->item=v;

return x; // return a local pointer
}

这是 Robert Sedgewick 的“Algorithm in c++”中的一段代码,第 252 页,程序 5.19。而在函数 max() 中,返回的变量是一个在函数内部创建的指针。

在我看来,返回本地指针在c/c++中是不允许的。所以我的问题是“写这样的函数可以吗”?我不敢相信这么经典的书会犯这样的错误。还是我理解错了原理?请帮忙。谢谢。

最佳答案

x 不是“局部指针”——即指向局部变量的指针。 *x 是使用 new 分配的。 x 指向动态分配的内存并返回该指针就好了。所以是的,写一个这样的函数是可以的,而且书上没有错误。

关于c++ - 返回一个本地指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779756/

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