20

Binary Search Tree に関する本を読んでいるときに、何か変なものが出てきました。関数パラメーターで次の宣言を見つけました。

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  

BinaryNodeクラス tのポインタへの参照も同様です。

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 に答える