Nous avons étudié dans le paragraphe précédent le type tableau. Dans un tableau, tous les éléments sont de même type.
La structure hétérogène (struct
)
permet de regrouper des éléments hétérogènes,
c'est-à-dire de types différents.
Cette structure permet en outre de nommer chacune de ses composantes, contrairement au tableau dans lequel chaque élément est repéré par un indice.
Considérons par exemple un logiciel de gestion de stock pour une épicerie. Pour chaque article, on tient à jour les informations suivantes :
Manifestement, toutes ces informations ne sont pas de type simple. La désignation (le nom de l'article) est une chaîne de caractères, et nécessite donc une définition du type :
const int MaxNom = 80; typedef char TypNom[MaxNom];
De même, la date de péremption peut être représentée par une chaîne de la forme ``01/12/92'', et donc être définie par :
typedef char TypDate1 [9]; /* 9 = 8 pour la date + 1 pour le \0 */
mais cette représentation rend difficile la comparaison de dates.
On peut donc lui préférer la représentation suivante, sous
forme de structure, en utilisant le constructeur
struct
:
typedef struct { int Jour; int Mois; int Annee; } TypDate;
Nous pouvons désormais définir la structure de donnée ``Article'',
elle aussi construite à partir de types standard ou définis
préalablement, à l'aide du constructeur struct
.
typedef struct { TypNom Nom; double PrixUnitaire; int Disponible; TypDate DatePeremption; int DelaiReapp; } Article;
Une composante d'une structure est aussi appelée un champ.