我正在读一本关于二元搜索树的书,并且出现了一些奇怪的东西。
class BST
{
public:
void insert(const Comparable & item)
private:
BinaryNode *root;
struct BinaryNode
{
Comparable element;
BinaryNode *left;
BinaryNode *right;
BinaryNode(const Comparable & theElement, BinaryNode *lt, BinaryNode *rt) :
element(theElement), left(lt), right(rt) {}
}
void insert(const Comparable & item, BinaryNode * & t) const;
};
private
insert
函数是public
insert
函数的辅助函数,private
insert
函数查找要插入的正确位置使用递归。
我不理解的部分是参数中的BinaryNode * & t
。这是什么意思?
地址指针t
?
答案 0 :(得分:12)
在您的表达式BinaryNode * & t)
BinaryNode* & t
------------- -----
BinaryNode pointer t is reference variable
所以t
是对 BinaryNode 类的指针的引用。
t的地址指针<?p>
您在c ++中感到困惑ampersand &
运算符。给出一个变量的地址。但语法不同。
ampersand &
在一些变量前面如下:
BinaryNode b;
BinaryNode* ptr = &b;
但是下面的方法是参考变量(它的简单非指针):
BinaryNode b;
BinaryNode & t = b;
和你的情况如下:
BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t = ptr;
答案 1 :(得分:2)
它是指针的引用,你可以改变这个函数中的指针,它会在外面改变。 简单示例http://liveworkspace.org/code/1EfD0Q $ 8