L'operateur -> inutile? en c

Résolu/Fermé
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 - 28 mars 2009 à 22:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 mars 2009 à 19:31
bonsoir,
donc voilà j'ai esseyer de travailler avec l'operateur -> pour pouvoir changer les données d'une structure à l'aide d'une fonction, mais sans l'utilisé je suis arrivé a le faire. comment ça s'explique?
sinon je sais que :
(*a).nom <-> a->nom
typedef struct etu
{
int age;
char nom[9];
}etu;

void fct(etu *c)
{
c[1].age=6;
}

int main()
{
etu a[3];
a[1].age=5;
fct(a);
printf(" %d",a[1].age);
return 0;
}

Merci d'avance pour vos éclairecicement :)

7 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
29 mars 2009 à 00:05
Salut,
Tu envoies en arguments l'adresse de la première case de ton tableau de structure.
Donc c[i] est de type structure. Ainsi tu dois utiliser le point. Dans certain cas tu seras amené à utilisé (*c).age, par exemple si tu envoies un pointeur sur une structure simple (pas en tableau), là tu pourras utiliser c->age.
Cdlt
0
Bien du mal à comprendre la question.
Si tu veux absolument utiliser '->', tu peux toujours écrire (++c)->age = 6; au lieu de c[1].age = 6;.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
29 mars 2009 à 01:26
Ou tu peux utiliser (c+1)->age=6; au lieu de ++c qui a l'avantage de ne pas perdre le pointeur sur le premier élément (bien qu'on puisse le récupérer ^^).
0
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 9
29 mars 2009 à 01:32
Merci pour vos réponses là c'est un peu plus clair, c'est juste que je me retrouvé pas ,mais là c bon^^
merci encors une nouvelle fois :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 9
29 mars 2009 à 01:39
Euh désolé j'ai oublié , et pour (++c)-> ou bien (c+1)-> ,pour les parametre
j'envoi un pointeur ou bien quoi??
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
29 mars 2009 à 01:47
Tu envoies le pointeur sur le premier élément du tableau.
Prototype :de la fonction appelée : void fct(etu *c);
Déclaration de a : etu a[3];
Appel : fct(a);
0
loupius > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
29 mars 2009 à 01:55
Ah, toute une éducation à refaire, ou peut-être à faire ;-)
Bonne nuit.
0
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 9
29 mars 2009 à 18:44
Merci pour l'aide:)
au fait, quand j'envoi le parametre à l'aide de : fct(a); le compilateur me passe un warning comme si a n'est pas une adresse ... sinon ça marche tres bien
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
29 mars 2009 à 19:31
T'as dû faire une erreur quelque part.
Poste le code que t'as essayé.
0