Invalid argument de type de -> C structs
Je suis en train d'accéder à des éléments dans un tableau de structures et d'imprimer leurs structures champs comme suit
printList(Album *a, int numOfStructs)
{
int i;
int j;
for(i = 0; i < numOfStructs; i++)
{
printf("number%d\n:", i+1);
printf("%s", a[i]->field2);
printf("%s", a[i]->field2);
printf("%d", a[i]->field3);
for(j = 0; j < a[i]->numOfStrings; j++)
{
printf("%s", a[i]->strings[j]);
}
printf("\n");
}
}
mais j'ai beaucoup d'erreurs en tant que tel
invalid argument de type de '->"
Ce que je fais mal avec ce pointeur?
Vous devez vous connecter pour publier un commentaire.
a
est de typeAlbum*
ce qui signifie quea[i]
est de typeAlbum
(c'est lei
ème élément du tableau deAlbum
objet pointé para
).L'opérande de gauche de
->
doit être un pointeur; la.
opérateur est utilisé si ce n'est pas un pointeur.Vous devez utiliser le
.
de l'opérateur. Voyez-vous, lorsque vous appliquez un*
à un pointeur, vous êtes en référence à elle. Il en va de même avec la[]
. La différence entre*
et[]
est que les supports nécessitent un décalage à partir du pointeur, qui est ajouté à l'adresse du pointeur, avant qu'il est déréférencé. En fait, ces expressions sont identiques:Pour vous connecter à votre question: le Changement
a[i]->field2
eta[i]->field3
àa[i].field2
eta[i].field3
.