如果我有一个这样的结构:

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)对吗?

最佳答案

指针正在被取消引用。leaf->key_value相当于(*leaf).key_value。arrow运算符意味着取消对指针的引用。

关于c - 对使用指针访问二叉树节点的内容感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14874029/

10-12 23:29