P R O G R A M M AT I O N E N C | Le langage C | C - Les structures (`struct`)
C - Les structures (`struct`)
Une structure (ou struct) permet de regrouper plusieurs variables sous un même nom.
Une struct représenter des données plus complexes qu’un simple entier ou qu’un
float. Avec une structure, tu peux modéliser un élève, un produit, un point, une date…
en associant plusieurs informations dans un même ensemble logique.
5TTR 6TTR
Découverte
Ce chapitre t’apprendra à créer, utiliser et comprendre les struct en C.
Objectifs
À la fin de cette leçon, tu sauras :
Définir une structure avec le mot-clé struct .
Déclarer et utiliser des variables de type structure.
Accéder aux champs d’une structure avec l’opérateur .
Utiliser typedef pour simplifier l’écriture.
Comprendre comment les structures sont stockées en mémoire.
Qu’est-ce qu’une structure ?
Une structure regroupe plusieurs variables (appelées champs) qui peuvent être de types différents.
Exemple : représenter un élève avec
son nom,
son âge,
sa moyenne.
Sans struct , tu aurais trois variables séparées. Avec struct , tu obtiens un seul "bloc" cohérent.
©
© 2025 Mr. Lambrechts
2025 Mr. Lambrechts [Link]
[Link] 11| | 5
5
Définir une structure
Exemple simple
1 typedef struct {
2 char nom[30];
3 int age;
4 float moyenne;
5 } Etudiant;
Ici :
nom est un tableau de 30 caractères,
age est un entier,
moyenne est un float .
Tu viens de créer un nouveau type personnalisé : struct Etudiant .
typedef permet d'utiliser ta structure plus simplement par la suite (cela te permet de faire Etudiant manu =
... au lieu de struct Etudiant manu=... quand tu déclares tes variables).
Simpl
Déclarer et utiliser une structure
1 Etudiant e1;
2
3 strcpy([Link], "Alice");
4 [Link] = 17;
5 [Link] = 14.5;
6
7 printf("%s a %d ans et %.2f de moyenne.\n", [Link], [Link], [Link]);
Accès aux champs
On utilise l’opérateur . :
[Link]
[Link]
[Link]
©
© 2025 Mr. Lambrechts
2025 Mr. Lambrechts [Link]
[Link] 22| | 5
5
Créer et initialiser en une ligne
1 struct Etudiant e2 = {"Lucas", 18, 12.8};
Structures contenant plusieurs tableaux
Oui, c’est possible. Exemple :
1 typedef struct {
2 char nom[30];
3 char prenom[40];
4 int age;
5 } Personne;
Chaque tableau peut contenir une chaîne de caractères distincte.
Lire des données dans une structure
1 Personne p;
2
3 printf("Nom : ");
4 scanf("%s", [Link]);
5
6 printf("Prénom : ");
7 scanf("%s", [Link]);
8
9 printf("Âge : ");
10 scanf("%d", &[Link]);
💡 Les tableaux ( char[] ) sont automatiquement passés par référence → pas de & .
Structures et mémoire
©
© 2025 Mr. Lambrechts
2025 Mr. Lambrechts [Link]
[Link] 33| | 5
5
Une structure regroupe ses champs de manière contiguë en mémoire.
Exemple :
struct Etudiant
{
char nom[30]; ← 30 octets
int age; ← 4 octets
float moyenne; ← 4 octets
}
La taille totale est au moins 38 octets (souvent un peu plus à cause de l’alignement mémoire).
Structures et fonctions
Une structure peut être passée à une fonction par valeur ou par référence.
Par valeur (copie)
1 void afficher(Etudiant e) {
2 printf("%s (%d ans)\n", [Link], [Link]);
3 }
Par référence (pointeur)
1 void modifier(Etudiant *e) {
2 e->age += 1;
3 }
💡 On utilise -> pour accéder aux champs via un pointeur.
À retenir
Une structure regroupe plusieurs données liées entre elles.
On accède aux champs avec . ou -> selon les cas.
typedef permet de créer un type plus simple à utiliser.
Les tableaux et chaînes dans une structure sont tout à fait possibles.
Une structure peut être passée par valeur (copie) ou par référence (adresse).
©
© 2025 Mr. Lambrechts
2025 Mr. Lambrechts [Link]
[Link] 44| | 5
5
Erreurs courantes à corriger
Oublier le ; à la fin de la définition de la structure.
Confondre tableau de char et chaîne "classique".
Mélanger . et -> .
Tenter de faire [Link] = "Alice"; au lieu de strcpy .
©
© 2025 Mr. Lambrechts
2025 Mr. Lambrechts [Link]
[Link] 55| | 5
5