这个函数告诉我我应该在我的二叉树中向左还是向右移动,编译器在尝试将结果与 & 运算符一起使用时返回错误



这些是结构

typedef struct Node{
int value;
struct Node *left;
struct Node *right;
} TNode;
typedef TNode *TTree;

如果我这样做,编译器会返回错误

TNode *is_left_or_right(TTree tree, int value){

if (tree->value > value)
return tree->left;
else 
return tree->right;
}
pointer = &(is_left_or_right(tree, value)); 

为什么第二个语句有效,而第一个语句会导致错误。如果&操作员处理变量

TTree *is_left_or_right(TTree tree, int value){

if (tree->value > value)
return &tree->left;
else 
return &tree->right;
pointer = *is_left_or_right(tree, value); 

错误:lvalue需要作为一元'&'操作数

为什么第二条语句有效,而第一条语句会导致错误。如果&操作员处理变量

因为&运算符适用于变量,更常见的是适用于指定具有地址的对象的左值表达式。它不适用于右值表达式,右值表达式表示没有(必须(任何持久存储或地址的值,例如12x + 2。函数返回值是右值。

相关内容

  • 没有找到相关文章