Module Atelier de programmation 2
Chapitre : Les structures de données
Amal BOUAZIZ
Le type Structure
Équivalent de l’enregistrement en algorithmique
Un enregistrement, appelé structure en langage C, est une variable
complexe qui permet de désigner sous un seul nom un ensemble de valeurs
pouvant être de types différents (simples ou complexes).
Chaque élément de l’enregistrement est nommé champ.
L’accès à un champ se fait par son nom dans l’enregistrement.
Type hétérogène composé de plusieurs champs pouvant avoir chacun leur
propre type
2
Le type Structure
Syntaxe : /* définir la structure */
Struct
nom_type {
type1 champ1
; type2
champ2 ;
type3 champ3
;} ;
3
Le type Structure
Déclaration :
struct nom_type objet; // sans définition d’un type personnalisé
Ou //pour une seule utilisation de la structure (sans déclaration
supplémentaire)
struct
nom_type {
type1 champ1 ;
type2 champ2 ;
type3 champ3 ;
} objet ;
Accès à différents membres :
[Link] le ième membre de l'objet
La taille réservée en mémoire est la somme des tailles des
champs 4
Le type Structure
Exemple de structure :
struct etudiant { int ID ;
char nom [80], prenom [80] ;
};
Exemple de déclarations de variables :
• struct etudiant e ;
• struct etudiant tabEtudiants [100] ; /* tableau de structures */
Initialisation à la déclaration :
struct etudiant e = {70081, "Ali", "Salah"};
5
Le type Structure
Utilisation de typedef :
typedef struct etudiant Etudiant ;
…
Etudiant e ;
Accès aux champs : utilisation du symbole ( .)
printf("L’étudiant %s %s a le numéro %d\n", [Link], [Link], [Link]) ;
Affectation possible entre deux variables de même type :
Etudiant e1, e2 ;
…
e1 = e2 ;
6
Structures et pointeurs
On peut utiliser des « pointeurs sur structure » :
Etudiant e, *pe ;
pe = &e ;
pe contiendra l’adresse du premier champ de la structure
Utilisation du symbole -> pour accéder aux champs dans le cas des
pointeurs :
pe->ID = 12 ;
Ou
(*pe).ID = 12 ;
7
Structures imbriquées
Imbrication d’une structure dans une autre structure :
typedef struct date {
int jour, mois, annee;
} Date ;
//typedef struct date Date ; struct etudiant {
int ID ;
char nom[80], prenom[80]; Date date_naissance ;
};
typedef struct etudiant Etudiant ;