Har*_*Cho 13 c++ pointers reference memory-address
我正在读一本关于二元搜索树的书,有些奇怪的东西出现了.
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;
};
Run Code Online (Sandbox Code Playgroud)
该private
insert
函数是函数的辅助函数public
insert
,private
insert
函数查找使用递归插入的正确位置.
我不明白的部分是BinaryNode * & t
在参数中.这是什么意思?指针的地址t
?
Gri*_*han 12
在你的表达 BinaryNode * & t)
BinaryNode* & t
------------- -----
BinaryNode pointer t is reference variable
Run Code Online (Sandbox Code Playgroud)
所以t
引用BinaryNode类的指针.
t的地址指针?
你ampersand &
在c ++中很困惑.给出一个变量的地址.但语法不同.
ampersand &
在下面的一些变量前面:
BinaryNode b;
BinaryNode* ptr = &b;
Run Code Online (Sandbox Code Playgroud)
但是下面的方法是引用变量(它的简单而不是指针):
BinaryNode b;
BinaryNode & t = b;
Run Code Online (Sandbox Code Playgroud)
你的如下:
BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t = ptr;
Run Code Online (Sandbox Code Playgroud)