Dan*_*ill 15 c heap binary-tree
我的印象是,可以通过使用箭头和点运算符一起访问链表或类似结构的子节点中的数据,如下所示:
typedef struct a{
int num;
struct a *left;
struct a *right;
}tree;
tree *sample;
...
if(sample->left.num > sample->right.num)
//do something
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实现它时,使用 - >和.从子节点访问数据我得到错误"请求成员数字不是结构或联合".
pmg*_*pmg 28
使用->的指针; 使用.的对象.
在你想要的具体情况下
if (sample->left->num > sample->right->num)
Run Code Online (Sandbox Code Playgroud)
因为所有的sample,sample->left以及sample->right是指针.
如果你转换指向对象中的任何指针; 使用.替代
struct a copyright;
copyright = *(sample->right);
// if (sample->left->num > copyright.num)
if (*(sample->left).num > copyright.num)
Run Code Online (Sandbox Code Playgroud)
Mel*_*Mel 10
因为我没有明确提到它:
。用于访问结构(或联合)的成员,例如
struct S {
int x;
}
S test;
test.x;
Run Code Online (Sandbox Code Playgroud)
-> 是一种更短的写法 (*pointer_to_struct).struct_member
Sample->left 给出 a struct a*,而不是 a struct a,所以我们正在处理指针。所以你还是得用->。
但是,您可以使用sample->left->num.