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
}
Это фрагмент кода из «Алгоритма в c ++» Роберта Седжвика, стр. 252, Программа 5.19. А в функции max()
возвращаемая переменная является указателем, который создается внутри функции.
По моему мнению, возвращение локального указателя не разрешено в c / c ++. Итак, мой вопрос: «Это нормально, чтобы написать такую функцию»? Я не могу поверить, что такая классическая книга ошибается, как эта. Или я неправильно понял принцип?
Пожалуйста помоги. Спасибо.