参数c ++中的星号和&符号

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)