2013-02-14 108 views
1

如果我有一個結構,看起來像這樣:困惑訪問二叉樹節點的內容與指針

struct node 
{ 
    int key_value; 
    struct node *left; 
    struct node *right; 
}; 

而且我有一個看起來像這樣的搜索功能:

struct node *search(int key, struct node *leaf) 
{ 
    if(leaf != 0) 
    { 
     if(key==leaf->key_value) 
     { 
      return leaf; 
     } 
     else if(key<leaf->key_value) 
     { 
      return search(key, leaf->left); 
     } 
     else 
     { 
      return search(key, leaf->right); 
     } 
    } 
    else return 0; 
} 

爲什麼裏面搜索功能,在與葉子比較值時,不要這樣做:

key < (*leaf)->key_value 

完成key < leaf->key_value

是不是一個指針?所以我們首先需要解引用指針然後訪問值?

所以,我們傳遞一個地址給函數,我們應該首先獲取指向該地址的內容,然後獲取值(key_value)是否正確?

+0

' - >'做了提領... – Pubby 2013-02-14 11:42:21

回答

4

指針被解除引用。 leaf-> key_value相當於(* leaf).key_value。箭頭運算符意味着取消引用指針。

0

leaf是一個指針(你可以通過觀察你的函數的參數來看它)和一個指針,就像這個詞本身所說的那樣,它會直接指向正確的內存區域。

->運營商將取消對它的引用,使您能夠訪問存儲值