L'operateur -> inutile? en c

Résolu
rocksider Messages postés 107 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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 :)
Configuration: Linux Fedora
Firefox 3.0.7

7 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. loupius
     
    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
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  4. rocksider Messages postés 107 Statut Membre 9
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rocksider Messages postés 107 Statut Membre 9
     
    Euh désolé j'ai oublié , et pour (++c)-> ou bien (c+1)-> ,pour les parametre
    j'envoi un pointeur ou bien quoi??
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
      1. loupius > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Ah, toute une éducation à refaire, ou peut-être à faire ;-)
        Bonne nuit.
        0
  7. rocksider Messages postés 107 Statut Membre 9
     
    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
  8. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    T'as dû faire une erreur quelque part.
    Poste le code que t'as essayé.
    0