Forum Programmation.c les structures en c

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-1
15
jan.
2020

bonjour a tous!

s'il vous plait je vous comprendre la différence entre typedef struc et struc!
par exemple:

typede struc {
char nom[10];
char prenom[10];
int age;
}etudiant;

et ceci

struc etudiant{
char nom[10];
char prenom[10];
int age;
};

il y a t-il une difference?
merci!

  • # linuxfr nouveau moteur de recherche ?

    Posté par  . Évalué à 3.

    Bonjour,

    Cela prend plus de temps de poser la question sur ce forum que d'utiliser un moteur de recherche
    pour trouver la solution. Tiens, puisque qwant est à l'affiche aujourd'hui:

    https://www.qwant.com/?q=difference%20typedef%20struct%20et%20struct&t=web

    Bonne journée.

  • # C, ou C++ ? Ça dépend du compilateur.

    Posté par  . Évalué à 3. Dernière modification le 15 janvier 2020 à 11:36.

    Avec un compilateur C++, il n'y a pas de différence dans ce cas précis, le typedef étant implicite pour les structs et les enum. Ce comportement, d'ailleurs, ne fait pas l'unanimité

  • # En C

    Posté par  . Évalué à 5. Dernière modification le 15 janvier 2020 à 13:13.

    En C :

    Dans le premier cas, on définit une structure anonyme et on définit un type : etudiant qui est un alias de la structure.

    typedef struct {
        char nom[10];
    }
    etudiant;
    

    Dans le reste du programme, on peut utiliser etudiant directement.

    Par ex:

    etudiant bob;
    strcpy(bob.nom, "bob");
    printf("le nom est %s\n", bob.nom);
    

    Dans le second cas, on ne crée pas de type, et on dit utiliser struct etudiant dans le code:

    struct etudiant{
        char nom[10];
    };
    
    struct etudiant bob;
    strcpy(bob.nom, "bob");
    printf("le nom est %s\n", bob.nom);
    
  • # simple

    Posté par  . Évalué à 2.

    déjà il manque des t à test struct, donc on a 2 erreurs de saint Taxe :P

    ensuite le typedef permet de simplifier l'écriture en créant des alias pour les type

    par exemple

    typedef unsigned int uint

    permet d'utiliser uint à la place de unsigned int.

    dans les cas que tu présentes tu as le typedef d'une structure anonyme et dans l'autre tu as simplement une structure non anonyme.

    En c pour déclarer une structure il faut préciser le struct;

    ce qui fait qu'avec ton premier exemple

    etudiant manu;

    fonctionne (le struct est inclus dans le typedef)

    alors que dans le second cas il faut

    struct etudiant mini

    enfin tu peux pousser le détail

    struct manu{
     int bidule;
     float truc;
    };  
    
    typedef struct manu mili;

    ce qui te permet de déclarer tes variables

    struct manu kaplop;
    mili bongo

    enfin je déconseille d'utiliser des typedef tel quels mais de les nommer différemment, par exemple s_etudiant ou Etudiant, ou tout autre graphie qui permettrai de les repérer au premier coup d'oeil

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.