La structure définit un ensemble composé d'une ou plusieurs variables (champs), éventuellement de types différents, regroupées sous un seul nom pour une manipulation plus facile.
Une structure permet de créer un nouveau type dans le langage C
Deux manière de déclarer une variable de type structure :
Au moment de la définition de la structure
Après la définition de la structure
Syntaxe 1
struct nom_struct {
type1 nom_champ1;
type2 nom_champ2;
. . .
typeN nom_champ_N;
};
struct nom_struct var1, var2;
struct {
type1 nom_champ1;
type2 nom_champ2;
. . .
typeN nom_champ_N;
} var1, var2;
Exemple 1
Exemple 2
struct date {
int jour;
int mois;
int annee ;
} ;
struct date date_exam;
struct date {
int jour;
int mois;
int annee ;
} date_exam;
L’accès aux champs d’une structure se fait en utilisant le nom de la variable structure suivi d’un « . » et du nom du champ désiré :
nom_variable.nom_champ
Exemple
#include <stdio.h>
int main() {
struct date {
int jour;
int mois;
int annee;
}date_exam;
date_exam.jour = 19;
date_exam.mois = 01;
date_exam.annee = 2021;
printf("Date Exam : %d/%d/%d", date_exam.jour, date_exam.mois, date_exam.annee);
}
Comme pour les autres types de données, il est possible de créer des tableaux de structures
L’accès aux champs de la structure d’un élément du tableau se fait en utilisant l’indice de cet élément suivi d’un « . »
Exemple
#include <stdio.h>
struct point{
short int x;
short int y;
}T[3] ={ 3,5,
0,1,
2,7,
};
int main() {
printf("P3 = (%d,%d)\n", T[2].x,T[2].y);
}
P3 = (2,7)
Les structures peuvent être passées comme paramètres lors de l’appel d’une fonction. Dans ce cas toutes les valeurs des différents champs de la structure sont copiées
Une fonction peut retourner une structure après son exécution
Exemple
#include <stdio.h>
struct heure {
int h;
int m;
};
struct heure ajouter_min(struct heure sh) {
sh.m = (sh.m<59)?++sh.m:0;
if (sh.m==0) {
sh.h = (sh.h<23)?++sh.h:0;
}
return sh;
}
int main() {
struct heure h1 = {22, 59}, h2;
h2 = ajouter_min(h1);
printf("%dh%d", h2.h,h2.m);
}
23h00
Le langage C permet, grâce au mot clé typedef, de créer des nouveaux noms pour les types existants.
Exemple
typedef int entier ;
entier var1, var2, T[3];