Chapitre 3 :
Les structures
Sommaire
I. Les structures
Mise en situation
1- La déclaration d’une structure
2- L’opérateur typedef
3- L’accès à un champ d’une structure
II. Les structures comportant d'autres structures
1- La déclaration
2- L’accès aux données
III. Tableaux de structures
1- La déclaration d’un tableau de structures
2- Le remplissage d’un tableau de structures
IV. Les pointeurs sur les structures
1- La déclaration d’un pointeur sur une structure
2- Le déréférencement d’un pointeur sur une structure
3- L’opérateur de déréférencement
I. Les structures
Mise en situation :
Lorsque l'on cherche à faire des programmes complexes, On a
besoin de traiter un groupe de variables comme une seule
variable (un seul bloc).
Exemples :
- Etudiants (Nom, Prénom, Code…)
- Salles (N°, Capacité , …)
- Filières
- Pays …
peut-on créer nos propres types de variables composés de
plusieurs variables primitives ?
Objectif :
Créer et gérer nos propres types de variables
23
1‐ La déclaration d’une structure
Une structure est un type composé variable (défini par nous même)
qui permet de regrouper plusieurs variables detypes différents et de
leur donner un nom.
Syntaxe :
struct <nom de la structure> Typedef struct
{ {
type‐1 champ‐1 ; type‐1 champ‐1 ;
type‐2 champ‐2 ; type‐2 champ‐2 ;
… …
type‐n champ‐n ; type‐n champ‐n ;
}; } <nom de la structure>;
struct <nom de la structure> <nom de la structure>
Ma_variable ; Ma_variable ;
2‐ L’opérateur typedef
typedef permet d’associer un nouveau nom à un type de donnée.
Syntaxe :
typedef TypeExistant TypeEquivalent;
L’utilisation de typedef simplifie l'écriture du programme et en accroît la lisibilité.
Exemple :
24
Exemple :
Attention :
la définition d’une structure n’engendre pas de réservation
mémoire (ne définit que définit le modèle.).
Remarque :
- Dans une structure, tous les noms de champs doivent être distincts.
- rien n'empêche d'avoir 2 structures avec des noms de champs en commun.
- L'affectation globale est possible avec les structures, on peut écrire : S2 = S1;
- Par contre la comparaison ne peut se faire que champ par champ
3‐ L’accès à un champ d’une structure
Syntaxe :
Nom_de_la_structure.nom_du_champ
25
Exemple:
II. Les structures comportant d'autres structures
1‐ La déclaration
Une structure peut comporter d’autres structures, la déclaration (voir exemple)
2‐ L’accès aux données
Exemple :
26
III. Tableaux de structures
1‐ La déclaration d’un tableau de structures
Une déclaration de tableau de structures se fait selon le même modèle que la déclaration
d'un tableau dont les éléments sont de type simple.
Exemple : Déclaration d’un tableau de 100 structures de type Etudiant
Pour référencer le nom de la personne qui a l'index i dans Etudiant on écrira :
Syntaxe :
etudiant_ESTF[i].nom
2‐ Le remplissage d’un tableau de structures
Exercice :
Ecrire une procédure Remplir_Etudiant qui remplit les informations d’un étudiant.
27
IV. Les pointeurs sur les structures
Les pointeurs peuvent pointés sur tous types de variables y compris les structures.
1‐ La déclaration d’un pointeur sur une structure
Exemple : Pointeur vers une structure
Soit la structure personne suivante :
On déclare une variable de type pointeur vers cette structure de la manière suivante :
2‐ Le déréférencement d’un pointeur sur une structure
Le déréférencement d’un pointeur sur une structure c’est l’accès à ses données.
Syntaxe :
(*pointeur).composante ;
28
3‐ L’opérateur de déréférencement
(*pointeur).composante Pointeur->composante
Syntaxe :
Pointeur ‐> composante ;
Exemple complet:
29
Exemple :
Conclusion :
Les structures permettent de traiter un groupe de variables comme une seule variable (un
seul bloc). Il est fréquent de manipuler un tableau de structures ou une structure qui
contient des tableaux.
30