Ke *_* Li 7 c++ local-variables
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
}
Run Code Online (Sandbox Code Playgroud)
这是Robert Sedgewick的"Algorithm in c ++"中的一段代码,第252页,程序5.19.在函数中max(),返回的变量是在函数内部创建的指针.
在我看来,c/c ++中不允许返回本地指针.所以我的问题是"写这样的函数是否可以"?我不敢相信这样一本经典的书会犯这样的错误.或者我误解了原理?请帮忙.谢谢.
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |