请求会员''在某种不是结合的结构中

时间:2014-05-31 15:58:14

标签: c struct compare

抱歉写了一个新问题,因为它解决了其他相同的问题,但我不知道这里有什么问题:(任何人都可以帮忙。

我的代码是

typedef struct First_s
{
    double a;
    double b, c;
    double d;
} First_t;

typedef struct Second_s
{
    char e[10];
    long f;        
    First_t g; 
} Second_t;

int compare(Second_t *x, Second_t *y)
{
    if(x.g.b >y.g.b){
    }
    return 0;
}

但它给了我一个错误:

  

请求会员' g'在一些不是联合结构的东西中

2 个答案:

答案 0 :(得分:4)

当您使用.访问结构字段时,您正在使用->

由于xy是指针,因此您无法直接使用.访问它们,除非您首先使用星号(*)运算符取消引用,即{{1}工作。但是,没有人这样做,典型的方法是使用(*x).g.b运算符,因为它就是它的用途。

此外,->函数不应该修改其参数,因此它们应该是常量指针:

compare()

答案 1 :(得分:2)

x是指向结构的指针。要检索指针的内容,首先需要取消引用它(并检查它是否不是NULL):

int compare(Second_t *x, Second_t *y)
{
    if(x->g.b >y->g.b){
    }
    return 0;
}