【发布时间】:2015-06-25 10:24:59
【问题描述】:
所以,我有一个结构
struct node
{
node * l;
node * r;
};
那么,有
typedef node* tnode;
我不了解的是这个函数:
void tsplit(tnode t, tnode &l, tnode &r, int x)
据我所知,我们将 t 传递给 tsplit() 作为指向结构的指针,而不是传递指向相同类型结构的两个指针引用。为什么我们不能只传递指针而不是它们的引用?这有意义吗?
【问题讨论】:
-
如果您“无法理解”某事,为什么还要浪费时间来解释?解释可以帮助那些不理解但能够理解的人。
-
将 tnode 的非 const 引用传递给 tsplit(...) 使函数有机会操纵 l 和 r(让它们指向另一个地址)
-
@KerrekSB 可能是因为 OP 在英语方面不是最好的,并且没有意识到细微但在逻辑上非常重要的区别。 =P
-
Here 概述了如何传递引用、原始指针和智能指针。
-
引用允许
tsplit自己操作指针,而不仅仅是指向的内容(每个tnode)。该函数可能会分配内存等。这是一个典型的“引用返回”问题,返回值是指针。
标签: c++ pointers reference treap