我一直得到错误
error: expected identifier before ‘(’ token
if((familia->(hijos+i)->edad)>18)
^
我真的解决不了,问题出在家里->但我不知道怎么解决。这些是我正在使用的结构体,我认为它应该足以理解:(
typedef struct hijo{
int va_a_la_escuela;
int edad;
int estaVacunado;
} hijo;
typedef struct gasto{
int vestimenta;
int vivienda;
int comida;
} gasto;
typedef struct familia{
int numero_de_hijos;
hijo* hijos;
gasto* gastos;
int recibeBono;
int revisada;
} familia;
int verificarVacuna(familia* familia){
int i;
for (i = 0; i < familia->numero_de_hijos; i++) {
if(familia->(hijos+i)->estaVacunado==0)//LINE OF ERROR
return 0;
}
return 1;
}
//VERIFICACION DE EDAD DE HIJOS DE LA FAMILIA
int verificarEdad(familia* familia){
int i;
for (i = 0; i < familia->numero_de_hijos; i++) {
if(familia->(hijos+i)->edad>18) //LINE OF ERROR
return 0;
}
return 1;
}
-
我假设在
familia->hijos
中,hijos
是一个数组,所以也许你的意思是familia->hijos[i].estaVacunado
-
或者你想使用指针运算,它可以是
(familia->hijos + i)->estaVacunado
-
或者如果是指针数组
familia->hijos[i]->estaVacunado
-
或指针数组,使用指针算术
(*(familia->hijos + i))->estaVacunado
你肯定是想使用像familia->hijos[i]->edad
这样的语法
->
的左操作数为表达式;必须是指向结构体或联合的指针。
->
的右操作数不是任意表达式;它只能是一个标识符,并且必须是结构体或联合的成员名。
familia->(hijos+i)
因此无效。你可能想要
familia->hijos
我们知道familia
是familia*
类型(顺便说一句,对类型和指向该对象的指针的对象使用相同的名称可能会引起混淆)。如果没有看到类型familia
是如何定义的,就不可能确切地确定应该写什么。
为了保持指针语法,您还可以使用familia->*(hijos + 1)->estaVacunado
。
这相当于familia->hijos[i]->estaVacunado