CHAPITRE 5 : LES ENREGISTREMENTS/
C LES TYPES STRUCTURES
1. Définition
2. Déclaration
3. Initialisation
4. Accès
5. Structure imbriquée
6. Tableaux de structures
2023-2024
1
Les enregistrements
C Tableau unidimentionnel
Problématique Introduction
Stocker et traiter aisément des informations de différents types relatives à 30 étudiants
:
– Numéro d’inscription (entier)
– Nom (chaine)
– Prenom (chaine)
– date de naissance (chaine)
– Moyenne (réel)
Les TABLEAUX stockent des informations de même type, donc ils ne représentent pas
la structure adéquate à notre problème
Quelle est la structure de données adéquate !!
2 2023-2024
Les types structures
C Tableau
Définition unidimentionnel Introduction
Enregistrement Champ1 Champ2 Champ3 Champ4 Champ5
› Un enregistrement est une structure de données statique, définie par l’utilisateur
qui permet de regrouper un ensemble fini d’éléments (champs) qui peuvent être de
types différents (hétérogènes)
› L’accès à un élément de l’enregistrement se fait en utilisant son nom et non pas son
indice.
› Les types structures permettent de définir un type adapté au problème à traiter
3 2023-2024
Les types structures
C Tableaud’une
Définition unidimentionnel
structure Introduction
› Lors de la définition d’une structure, on définit un modèle où on indique
ses champs avec leurs types et noms.
› Chaque structure possède un nom. Ce nom sera utilisé pour déclarer des
enregistrements.
› Une structure peut contenir 1 à n champs, du même type ou de types
différents.
› Une structure à un seul champ est totalement inutile.
struct <nom de la structure> {
<type champ1> <nom champ1>;
<type champ1> <nom champ1>;
.
<type champ_n> <nom champ_n>;
} ; // point-virgule est nécessaire après l'accolade fermante
de la déclaration de la structure
4 2023-2024
Les types structures
C Tableaud’une
Définition unidimentionnel
structure Introduction
Exemple :
struct complexe //Définition d’un nouveau type
{
double re ; // => struct est un mot réservé au langage
double im ; // => complexe est le nom du nouveau type
};
› Le nouveau type de données est struct complexe
› re et im sont des champs de la structure
› On accède aux champs via l’opérateur .
5 2023-2024
Les types structures
C Tableaud’une
Définition unidimentionnel
structure Introduction
› Les éléments d’une même structure peuvent avoir des types différents
struct ETUDIANT
{
char nom [30]; // nom de l’étudiant
int age; // age de l’étudiant
float moyenne; // moyenne de l’étudiant
};
› Le nom des champs répond aux critères des noms de variables
› Deux champs ne peuvent pas avoir le même nom
› Les données peuvent être de tout type à l’exception du type de la structure dans
laquelle elles se trouvent
› La définition d’une structure donne uniquement le squelette de la structure, c’est la
définition d’un type de variable complexe, donc ne réserve pas de mémoire
6 2023-2024
Les types structures
C Tableau d’une
Déclaration unidimentionnel Introduction
variable de type structure
› Après la définition d’une structure, il faut déclarer une (ou plusieurs) variable(s)
structurée(s)
› La déclaration d’une variable structurée se fait comme suit :
struct <NomStructure> <var_Structure>
Exemple:
struct ETUDIANT struct ETUDIANT
{ {
char nom [30]; char nom [30];
int age; int age;
float moyenne; float moyenne;
}; } e1, e2 ;
struct ETUDIANT e1, e2 ;
En mémoire, en déclarant une variable e1, l’espace réservé aura l’allure suivante:
Nom age moyenne
7 e1 30 octets 2023-2024
4 octets 8 octets
Les types structures
C Tableau unidimentionnel
Initialisation d’une variable de type Introduction
structure
› L’initialisation peut se faire lors de la déclaration :
struct ETUDIANT
{
char nom [30];
int age;
float moyenne;
} e1 = {"Ali",19, 16.80} ;
Ou bien
struct ETUDIANT e2 = {"Asma", 25, 17};
8
Les types structures
C Tableau unidimentionnel
Manipulation Introduction
des variables de type structure
› L’accès aux éléments de la structure se fait à travers l’opérateur dot (.)
› Exemple:
[Link] = 40
strcpy([Link], "Amina")
› Pour lire et afficher un élément int de la structure :
› scanf("%d",&[Link])
› printf("Age= %d",[Link])
› On pourra copier le contenu d’une variable structurée à une autre :
– De façon individuelle (champ par champ)
strcpy([Link],[Link])
[Link] = [Link]
– De façon globale (sur toute la structure)
e1 = e2
› L’opérateur d’affectation et l’opérateur d’adresse &, sont les seuls opérateurs
s’appliquant de manière globale, à une structure.
9
Les types structures
C Tableaucomportant
Structures unidimentionnel
des tableaux Introduction
› Une structure peut contenir bien évidemment des champs de type chaines de
caractères ou tableaux
Notation
[Link][0] : le 1er caractère du
champ nom de l’étudiant Etudiant1
[Link][3] : la 4e note du
tableau notes de l’étudiant Etudiant2
Initialisation
struct UnEtudiant e1={"Ben
Salem", "Ali",{10.0,12.5,13.6
, 7.5},2,10.9}
10
Les types structures
C Tableaucomportant
Structures unidimentionnel Introduction
d’autres structures
› Une structure peut contenir aussi des champs de type structure, cette dernière doit
être différente de la première
Initialisation
struct UnEtudiant e1={"Ben
Salem", "Ali",{1,1,2000}}
Utilisation
[Link] =1;
scanf("%d%d%d", &[Link],
&[Link], &[Link]);
11
Les types structures
C Tableau
Tableaux de unidimentionnel
structures Introduction
› Etant donné qu’une structure est composée d’éléments de taille fixes, il est
possible de créer un tableau ne contenant que des éléments du type d’une
structure donnée.
› Il suffit de créer un tableau dont le type est celui de la structure et de le repérer par
un nom de variable
12
Les types structures
C Tableau
Tableaux de unidimentionnel
structures Introduction
13
Les types structures
C Tableau unidimentionnel Introduction
La déclaration de types synonymes : typedef
› La déclaration typedef permet de définir et ce que l’on nomme en langage C des
“types synonymes”.
› elle s’applique à tous les types et pas seulement aux structures.
› Exemple :
typedef int entier ;
Signifie que entier est synonyme de int, de sorte que les déclarations suivantes sont
équivalentes :
int n, p; entier n,p;
L’emploi de typedef permet ainsi de déclarer des variables du type correspondnat à
notre modèle de structure, à l’aide d’un seul mot de notre choix.
14
Les types structures
C Tableau unidimentionnel Introduction
La declaration de types synonymes : typedef
struct Etud { struct Etud {
float note [20]; float note [20];
int niveau; int niveau;
float moyenne; } ; float moyenne; } ;
typedef struct Etud Etudiant;
// déclaration
struct Etud E1; // déclaration
struct Etud E1;
Ou
typedef struct { Etudiant E1;
float note [20]; // Elimination de mot clé « struct »
int niveau;
float moyenne; } Etudiant;
// La déclaration des variables se fera uniquement
par:
15 Etudiant E1;