参数中的星号和与号

2021-12-13 00:00:00 reference pointers c++ memory-address

我正在读一本关于二叉搜索树的书,然后出现了一些奇怪的事情.我在函数参数中遇到了以下声明.

I am reading a book about Binary Search Tree and something weird came up. I came across the following declaration in a function parameter.

BinaryNode * & t

什么意思?t的地址指针?

What does it mean? Pointer of the address of t?

对于上下文,这是我看到的代码.私有insert 函数是公共insert 函数的辅助函数,私有insert 函数使用递归寻找合适的插入位置.>

For context, this is the code where I saw this. The private insert function is a helper function for public insert function, and private insert function looks for the right place to insert using recursion.

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;
};

推荐答案

在你的表达式中 BinaryNode * &t)

            BinaryNode*                & t
           -------------              -----
            BinaryNode pointer        t is reference variable  

so t 是对 BinaryNode 类的指针的引用.

so t is reference to pointer of BinaryNode class.

t 的地址指针?

您对 C++ 中的 & 运算符感到困惑.给出一个变量的地址.但语法不同.

You are confused ampersand & operator in c++. that give address of an variable. but syntax is different.

& 在一些变量前面,如下所示:

ampersand & in front of some of variable like below:

BinaryNode b;
BinaryNode* ptr = &b;

但是下面的方式是用于引用变量(它的简单不是指针):

But following way is for reference variable (its simple not pointer):

BinaryNode b;
BinaryNode & t  = b; 

你的如下:

BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t  = ptr;  

相关文章