Module : Algorithmique et
programmation 2
Cours
Algorithmique et Programmation
en langage C
Les structures
Pr. Haitam ETTAZI
Les structures (1/2)
• Une structure est un nouveau type de données composé de plusieurs champs qui sert à
représenter un objet (ex. Etudiant, Client, Compte bancaire , … ).
• Dé nition du modèle de structure : struct < identi cateur_structure > {
< type> <ident_champ_1 >;
< type> < ident_champ_2>;
…
< type> < ident_champ_n >;
};
• Exemple :
struct voiture { char couleur[10];
int Immat ; };
• La dé nition d’un modèle de structure ne réserve pas de variables correspondant à
cette structure .
• Une fois un tel modèle est dé ni , il est possible de déclarer des variables du type
correspondant.
•• Exemple
Déclaration d’une structure : struct <identi cateur> < ident_variable> ;
: struct voiture V;
( V destiné à contenir une chaine de caractères et une valeur entière)
2
fi
fi
fi
fi
fi
Les structures (2/2)
Dé nition avec Déclaration d’une structure : On peut regrouper la dé nition
et la déclaration des variables d’une structure dans une seule instruction
struct < identi cateur_structure> {
< type> <ident_champ_1>;
< type> < ident_champ_2>;
…
< type> < ident_champ_n>;
} <ident_variable1>, < ident_variable2>, … ;
• Exemple :
struct voiture { char couleur[10];
int Immat ; } V1, V2, V3 ;
• Un autre cas possible :
struct { char couleur[10];
int Immat ; } V1, V2, V3 ;
3
fi
fi
fi
Utilisation des structures (1/3)
• Les structures peuvent être manipulées champ par champ ou dans leur ensemble
• Opérations sur les champs :
struct voiture { char couleur[10];
int Immat ;
};
• Accès à un champ d’une structure :
nom de la variable structure suivi de l’opérateur point (.) suivi du nom de champ
– Syntaxe : < identif_structure> . < champ_i >;
– Exemple : struct voiture V;
V. Immat = 247890;
printf ( " Immat = %d", [Link] );
4
Utilisation des structures (2/3)
• Opérations sur les variables structures
struct voiture { char couleur[10];
int Immat ;
};
• Initialisation à la déclaration :
– Syntaxe : struct < identif > < nom_variable> = {champ1, champ2,…, champn};
– Exemple : struct voiture V = {"bleu", 13737};
• A ectation :
– Les variables structures doivent être de même type
– Exemple : struct voiture V1, V2; V1 = V2;
L’a ectation globale entre deux variables d’un même type structure est la
seule opération autorisée, mais pas les autres ( e. g . comparaisons, etc. )
5
ff
ff
Utilisation des structures (3/3)
• Type synonyme d’un type
• Pour dé nir un type synonyme à un type simple, on utilise l’attribut typedef
• typedef ne crée pas de nouveau type à proprement parler
• Syntaxe : typedef <type> < ident_type > ;
• Exemple :
1) struct voiture { char couleur[10] ;
int Immat ;
};
typedef struct voiture Une_voiture;
Signi e que Une_voiture est synonyme de struct voiture.
struct voiture V et équivalente à Une_voiture V;
2) typedef struct { int jour , mois, annee ;
} Date ;
Date date;
6
fi
fi
Utilisation des structures : exemple 1
7
Utilisation des structures : exemple 2
8
Structures imbriquées
On peut utiliser un type structure comme attribut
9
Tableaux de structures
• Syntaxe : struct nom_struct < Ident - Struct> [Taille] ;
• Exemple : struct voiture {
char couleur[10];
int Immat ;
};
struct voiture Mes_voitures [10] ; // déclare un tableau de 10 voitures de type
voiture
Mes_voitures [0] {couleur0, Immat0}
Mes_voitures [1] {couleur1, Immat1}
Mes_voitures [2] {couleur2, Immat2}
… …
Mes_voitures [i] {couleuri , Immati }
… …
Mes_voitures [9] {couleur9, Immat9}
10
Tableaux de structures : exemple
11
Structures et pointeurs
• Comme pour les autres types, il est possible de dé nir des pointeurs sur des
structures
• L’accès aux champs à partir de son adresse se fait en utilisant l’opérateur “ - > “
( équivalent à (*p) .)
14
12
fi