如果我有一个看起来像这样的结构:
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 :(得分:4)
指针被取消引用。 leaf-&gt; key_value等价于(* leaf).key_value。箭头操作符意味着取消引用指针。
答案 1 :(得分:0)
leaf
是一个指针(您可以通过观察函数的参数来看到它),而指针就像单词本身所说的那样,将直接指向正确的内存区域。
->
运算符将取消引用它,允许您访问存储值