20

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

BinaryNode * & t

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


对于上下文,这是我看到的代码。私有insert函数是公共insert函数的辅助函数,私有insert函数使用递归查找正确的插入位置。

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

2 回答 2

16

在你的表情中BinaryNode * & t)

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

对BinaryNodet的指针的引用也是如此。

t的地址指针?

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

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

BinaryNode b;
BinaryNode* ptr = &b;

但以下方式适用于引用变量(其简单的非指针):

BinaryNode b;
BinaryNode & t  = b; 

你的如下:

BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t  = ptr;  
于 2013-01-14T07:38:39.497 回答
3

它是对指针的引用。您可以在此函数中更改指针,它将在外部更改。

于 2013-01-14T07:31:35.717 回答