Iset Gabès GE/1ère Licence
Chapitre 2 Les Structures
1. définitions
Une structure est une suite finie d’objets de types différents.
Les variables d'une structure sont appelées membres dont chacune est distingué par un
identificateur et peut avoir n'importe quel type, y compris des tableaux ou d'autres structures.
Contrairement aux tableaux, les différents éléments d’une structure n’occupent pas
nécessairement des zones contigües en mémoire
2. syntaxe
Les modèles de structure sont créés en utilisant le mot-clé struct :
struct nom_modele
{
Type1 nom_membre1 ;
Type1 nom_membre1 ;
…..
Type1 nom_membre1 ;
};
Exemples :
struct Produit struct date struct etudiant
{ char { int jour ; { long matricule ;
libelle[30] ; int moi ; char nom[20] ;
float prix ; int année char prénom[20] ;
}; }; date date_naissance ;
float moyenne ;
};
3. Création d’instance (objet)
Pour déclarer un objet de type structure correspondant au modèle précédent, on utilise la
syntaxe suivante :
struct nom_modél identificateur ;
Si le modèle n’a pas été déclarer précédemment, on peut déclarer un objet de la façon
suivante :
struct nom_modele
{
Type1 nom_membre1 ;
Type1 nom_membre1 ;
…..
Type1 nom_membre1 ;
}identificateur1, identificateur 2, .. identificateur n ;
Dr. Adel NAOUI/2024_2025 1
Iset Gabès GE/1ère Licence
Exemples
structlivre
{char nom[40] ;
char auteur[40] ;
int isbn ;
}livre1,livre2 ;
struct etudiant E1;
struct etudiant classe[20] ; // il s’agit ici d’un tableau de 20 étudiants
4. initialisation
L’initialisation d’un objet peut se faire lors de sa déclaration de la façon suivante :
struct modele identificateur={val_membre_1,val_membre_2,…,val_membre_n} ;
Exemples
1er cas
struct date aujourdhui={30,4,2018} ;
struct livre livre1={‘’L’alchimiste’’,’’Paulo coelho ‘’,021673874} ;
2éme cas : structure dans une structure
struct etudiantm={132453,’’Mohamed’’, ‘’ben amor’’,{12,4,1995},12,65} } ;
5. Accès aux membres
On accède aux membres de la structure en utilisant l’opérateur «.», le i-eme membre de
l’objet est donc désigné par identificateur.membre_i
Exemple 1 :
#include<stdio.h>
#include<math.h>
struct complexe
{
float relle ;
float img ;
};
main()
{
struct complexe z ;
[Link]=5.3 ;
[Link]=12.4 ;
norme=sqrt([Link]*[Link]+[Link]*[Link]) ;
}
Exemlpe 2
Afficher les étudiants d’une classe cl de 10 etudiant déjà initialisée
struct etudiant cl[10] ;
………<initialisation de la classe>
Dr. Adel NAOUI/2024_2025 2
Iset Gabès GE/1ère Licence
for(i=0 ;i<10 ;i++)
{
printf(“nom:%s \t prenom:%s \t date de naissance:
%i/%i/%i”,cl[i].nom,cl[i].prenom,cl[i].date_nais.jour, cl[i].date_nais.moi,
cl[i].date_nais.annee)
}
6. Quelques comparaisons avec les tableaux
Tableau structure
Le nom est un pointeur sur le La structure elle même
premier element
Passé aux fonctions Comme pointeur Valeur ou pointeur
Retour d’une fonction Pas possible Par valeur ou pointeur
Peut être affecté avec "=" Pas possible(exp : tab1=tab2 Oui (exp livre1=livre2)
est incorrecte)
Remarque :
Deux instances de structure peuvent être affectée l'une à l'autre via l’opérateur "="
Exemple :
struct etudiant m={132453,’’Mohamed’’, ‘’ben amor’’,{12,4,1995},12,65} } ;
struct etudiant tmp=m ;
Remarque :
Un autre opérateur peut être utilisé : « -> »
Exemple avec l’opérateur « -> »
printf("Matricule :%li \n ",p->matricule) ;
printf("Nom :%s \n ",p->nom) ;
printf("Prenom :%s \n ",p->prenom) ;
printf("Date de naissance :%i/%i/%i \n ",p->[Link],p->moi, p->annee) ;
printf("Moyenne :%f \n ",p->moyenne) ;
Exercices
Exercice 1
Déclarer une variable P ayant les informations suivantes:
Nom (chaîne decaractères)
Prénom (chaîne decaractères)
Date de naissance: Jour (entier), Mois (entier) et Année(entier)
Matricule (chaîne decaractères)
Remplir P avec les informations suivantes: Nom: "Amer" Prénom: "Salem" Date de
naissance: "03/04/2005" Matricule: "A32"
Dr. Adel NAOUI/2024_2025 3
Iset Gabès GE/1ère Licence
Exercice 2
Soit une fiche employé (nom, prenom, matricule, salaire)
Saisir un tableau de 100 employés puis afficher le nom, le prénom et la matricule de
l’employé ayant le salaire le plus élévé.
Exercice 3
Sachant qu’un nombre complexe est composé de partie réelle et de partie
imaginaire, créer la structure Complexe puis saisir deux nombres complexes C1 et
C2et afficher leur sommes et leur produit.
Dr. Adel NAOUI/2024_2025 4