C_facile : Introduction au langage C
Cours

Déclaration de type

Nous pouvons constater qu'à chaque fois que nous déclarons une variable structurée ou un pointeur vers une variable structurée, nous sommes obligés de préciser le mot réservé "struct" devant l'identificateur du nom du constructeur, ce qui peut être fastidieux. Heureusement, le langage C permet de construire des types définis par le programmeur.

ExempleExemple de départ

#define MAX 20

struct etudiant

{

       char nom[MAX], prenom[MAX];

       float moyenne;

} ;

Syntaxe

Nous pouvons déclarer ensuite :

typedef struct etudiant T_etudiant;

La syntaxe qui utilise le mot réservé "typedef" ci-dessus permet au programmeur de définir un type.

Ce type pourra ensuite être utilisé comme les autres types de variables.

Par la suite il suffira d'écrire :

void main()

{

       struct etudiant e = {"jean","seigne",18.8}, a, *pt_e;

       T_etudiant etu_1, etu_2, * pt_etu;

       ...

}

"T_etudiant" est synonyme de "struct etudiant", les variables "etu_1", "etu_2" et "pt_etu" sont correctement définies. Elles s'utiliseront comme les variables "e", "a" et "pt_etu"

De même, cela simplifie l'écriture des fonctions, les fonctions deviennent alors:

void afficher_etudiant( T_etudiant un_etu)

{

      printf("\n nom : %s ", un_etu.nom);

      printf("\n prenom : %s ",un_etu.prenom);

      printf("\n moyenne : %f ",un_etu.moyenne);

}

void saisie_etudiant( T_etudiant * un_pt_sur_etu)

{

      printf("\n nom : ");

      scanf("%s ", un_pt_sur_etu->nom);

      printf("\n prenom : ");

     scanf("%s ",un_pt_sur_etu->prenom);

      printf("\n moyenne : ");

     scanf("%f ",&(un_pt_sur_etu->moyenne));

}

Syntaxe

De façon générale, "typedef" s'utilise ainsi :

typedef <type_constructeur> <nouveau_type_contructeur>

Exemple

Exemple de l'utilisation de la déclaration de type avec des tableaux

#define MAX 3

typedef float T_coord[MAX];

Peut être utilisé ainsi :

void main(void)

{

      T_coord point1, point2;

}

Les variables « point1 » et « point2 » sont ainsi déclarées comme des tableaux de 3 flottants (des coordonnées géométriques par exemple).

Il est aussi possible d'effectuer les déclarations "struct" et "typedef" simultanément, ainsi les écritures suivantes sont possibles :

typedef struct etudiant

{

      char nom[MAX], prenom[MAX];

       float moyenne;

} T_etudiant;

Ou ne faire que la déclaration du "typedef" ainsi :

typedef struct

{

      char nom[MAX], prenom[MAX];

      float moyenne;

} T_etudiant;

Dans ce dernier cas l'identificateur "etudiant" pour le constructeur de structure ne sera pas connu car il n'est pas déclaré.

Il sera donc impossible de déclarer les variables ainsi :

struct etudiant alpha;

Car l'identificateur "etudiant" sera inconnu.

Par contre dans les deux cas on peut écrire les déclarations :

T_etudiant alpha, beta;

Car l'identificateur de type « T_etudiant » est déclaré.

Structure et tableau dans une structure (page suivante)Variables structurées et passage de paramètres (page Précédente)
AccueilImprimer creativecommons : by-nc-ndRéalisé avec SCENARI