2013-02-14 43 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是一个指针(你可以通过观察你的函数的参数来看它)和一个指针,就像这个词本身所说的那样,它会直接指向正确的内存区域。

->运营商将取消对它的引用,使您能够访问存储值