16.2. Définition d'une variable de type structuré

Icône de l'outil pédagogique Définition d'une variable de type structuré

En définissant le modèle de la structure, on crée un nouveau type dit structuré. On peut donc définir des variables avec ce nouveau type comme avec n’importe quel autre type.

Ainsi, la définition :

static T_personne Oscar, Isidore ; /* static est conseillé */

permet de définir deux variables Oscar et Isidore qui sont de type structuré T_personne.

La place occupée par une variable structurée est la somme de la place occupée par chacun de ses champs (qui sont consécutifs). Elle peut être fournie par l'opérateur sizeof :

sizeof(T_personne) ou sizeof(Oscar) vaut 42 (octets)

On peut bien sûr utiliser le type structuré pour la définition de tableaux. La définition :

static T_personne eleve[30] ;

définit un tableau eleve de 30 éléments, chaque élément étant de type structuré T_personne. Ce tableau occupe 30*42 octets en mémoire, ce que confirme la valeur 1260 fournie par sizeof(eleve).

Une variable structurée, à plus forte raison un tableau de structures, occupe suffisamment de place en mémoire pour que le mot-clé static soit conseillé (rappelons que static demande que le tableau soit créé en mémoire statique plutôt qu’en pile : c’est indispensable pour les « grosses » variables).

Notons que si le modèle de structure n'a pas été défini en utilisant typedef, les écritures se compliquent beaucoup (il faut traîner le mot‐clé struct) : struct t_adresse mairie ; à éviter donc !

Notons enfin qu’il est techniquement possible de définir simultanément (sur la même ligne) le type structuré (sans typedef) et des variables de ce type. C'est absolument déconseillé : la lisibilité est nulle et les variables ainsi créées sont globales, ce qui est à prohiber !