1

因此,基本上,我在两个不同的 .h 文件(vcard.h 和 bst.h)中定义了两种不同的结构,它们都包含在当前文件中。以下是结构定义:

struct bst {
  vcard *c;
  bst *lsub;
  bst *rsub;
};

struct vcard {
  char *cnet;
  char *email;
  char *fname;
  char *lname;
  char *tel;
};

在我的 bst 插入函数中,我正在尝试运行以下命令:

bst *bst_insert(bst *t, vcard *c){

    if (strcmp(c->cnet, t->c.cnet) > 0){
    ...
    }
}

编译器吐回以下错误:

“bst.c:28:错误:在非结构或联合的情况下请求成员 'cnet'”

我是否错误地调用了 t->c.cnet?

4

3 回答 3

5

c 是一个指针,你需要 t->c->cnet

于 2013-03-07T23:53:26.263 回答
1

应该是t->c->cnet因为 c 是指向 a 的指针vcard

于 2013-03-07T23:53:50.230 回答
0

只是一个侧面答案,您还可以使用.运算符来访问指向结构的指针的成员。由于优先级,您只需要先用括号取消引用指针,然后您就可以像这样访问该成员t->(*c).cnet。该->符号是作为一种速记方式创建的。

于 2013-03-08T05:07:46.043 回答