我一直收到错误
error: expected identifier before ‘(’ token
if((familia->(hijos+i)->edad)>18)
^
我真的无法解决它,问题出在familia->但我不知道如何解决它。 这些是我正在使用的结构,我认为它应该足以理解:(
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;
}
答案 0 :(得分:4)
我认为在familia->hijos
中,hijos
是一个数组,所以也许你的意思是
familia->hijos[i].estaVacunado
或者您可能想要使用指针算法,可以是
(familia->hijos + i)->estaVacunado
或者如果它是一个指针数组
familia->hijos[i]->estaVacunado
或指针数组,使用指针算法
(*(familia->hijos + i))->estaVacunado
答案 1 :(得分:2)
您的意思是使用familia->hijos[i]->edad
等语法。
答案 2 :(得分:0)
->
的左操作数是一个表达式;它必须是指向结构或联合的指针。
->
的右操作数不是任意表达式;它只能是一个标识符,它必须是struct或union成员的名称。
您的子表达式
familia->(hijos+i)
因此无效。你可能想要
familia->hijos
我们知道familia
的类型为familia*
(BTW,对于类型和对象使用相同的名称,指向该对象的指针可能会令人困惑)。如果没有看到您的类型familia
是如何定义的,那么就不可能确切地确定您应该写什么。
答案 3 :(得分:-1)
要保留指针语法,您还可以使用familia->*(hijos + 1)->estaVacunado
。
这相当于familia->hijos[i]->estaVacunado