抱歉写了一个新问题,因为它解决了其他相同的问题,但我不知道这里有什么问题:(任何人都可以帮忙。
我的代码是
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'在一些不是联合结构的东西中
答案 0 :(得分:4)
当您使用.
访问结构字段时,您正在使用->
。
由于x
和y
是指针,因此您无法直接使用.
访问它们,除非您首先使用星号(*
)运算符取消引用,即{{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;
}