Chapitre 7 Les structures
Une structure est un assemblage de variables qui peuvent avoir différents types. Contrairement
aux tableaux qui nous obligent à utiliser le même type dans tout le tableau, nous pouvons créer
une structure comportant des variables de type long, char, int, double, etc. à la fois.
7.1. Déclaration d’une structure
Syntaxe
struct < identificateur>
{ type identificateur1 ;
type identificateur2;
…..
type identificateurn;
}
Exemple
struct produit
{ int numero ;
int qte ;
float prix ;
};
Le modèle de structure de l’exemple s’appelle produit et il précise le nom et le type de chacun
des champs constituant la structure (numero, qte et prix). Les types sont : int et float.
Une fois un tel modèle défini, nous pouvons déclarer des variables du type correspondant.
Par exemple :
struct produit art1 ; /* réserve un emplacement nommé art1 « de type produit » destiné à
contenir deux entiers et un flottant. */
7.2. Utilisation d’une structure
En C, on peut utiliser une structure de deux manières :
En travaillant individuellement sur chacun de ses champs ;
En travaillant de manière globale sur l’ensemble de la structure.
7.2.1. Utilisation des champs d’une structure
Chaque champ d’une structure peut être manipulé comme n’importe quelle variable du type
correspondant. La désignation d’un champ se note en faisant suivre le nom de la variable
structure de l’opérateur « point » (.) suivi du nom de champ tel qu’il a été défini dans le modèle
Exemples
[Link] = 15 ; //affecte la valeur 15 au champ numero de la structure art1.
printf ("%f", [Link]) ; //affiche, suivant le code format %f, la valeur du champ prix de la
structure art1.
Programmation en C – HN1- NINKO LIDWINE 49
scanf ("%f", &[Link]) ; //lit, suivant le code format %f, une valeur qui sera affectée au champ
prix de la structure art1. Notez bien la présence de l’opérateur &.
[Link]++ ; //incrémente de 1 la valeur du champ numero de la structure art1.
7.2.2. Utilisation globale d’une structure
Il est possible d’affecter à une structure le contenu d’une structure définie à partir du même
modèle. Par exemple, si les structures art1 et art2 ont été déclarées suivant le modèle produit
défini précédemment, nous pourrons écrire :
art1 = art2 ;
7.3. Initialisations de structures
Il est possible d’initialiser explicitement une structure lors de sa déclaration.
Exemple
struct produit art1 = { 30, 130, 300000} ;
7.4. Le typedef
Une instruction appelée typedef sert à créer un alias de structure, c'est-à-dire à dire que telle
chose est équivalente à écrire telle autre chose. Cela évite d'avoir à écrire le mot "struct" partout.
#include <stdio.h>
#include <stdlib.h>
typedef struct produit produit;
struct produit
{ int numero ;
int qte ;
float prix ;
};
int main()
{
produit art1;
printf ("Entrer le numéro de produit : \n") ;
scanf ("%d", &[Link]) ;
printf ("Entrer la quantité du produit : \n") ;
scanf ("%d", &[Link]) ;
printf ("Entrer le prix du produit : \n") ;
scanf ("%d", &[Link]) ;
printf ("Les informations sur le produit sont : Numéro = %d Quantité = %d Prix = %f \n",
[Link], [Link], [Link]) ;
return 0;
}
typedef : indique que nous allons créer un alias de structure.
struct produit : c'est le nom de la structure dont nous allons créer un alias (c'est-à-dire
un "équivalent").
produit : c'est le nom de l'équivalent.
Programmation en C – HN1- NINKO LIDWINE 50
7.5. Pointeur de structure
Un pointeur de structure se crée de la même manière qu'un pointeur de int, de double ou de
n'importe quel autre type de base.
Exemple :
produit* art1 = NULL;
ou
produit *art1 = NULL;
On a ainsi un pointeur de produit appelé "art1".
7.6. Imbrication de structures
7.6.1. Structure comportant des tableaux
Exemple
struct personne
{
char nom[30] ;
char prenom [20] ;
float heures [31] ;
} employe, courant ;
Cette déclaration réserve les emplacements pour deux structures nommées employe et
courant. Ces dernières comportent trois champs :
nom qui est un tableau de 30 caractères ;
prenom qui est un tableau de 20 caractères ;
heures qui est un tableau de 31 flottants.
7.6.2. Tableaux de structures
Exemple
struct point
{
char nom ;
int x ;
int y ;
};
struct point courbe [50] ;
7.6.3. Structures comportant d’autres structures
Exemple
struct date
{
int jour ;
int mois ;
int annee ;
Programmation en C – HN1- NINKO LIDWINE 51
};
struct personne
{
char nom[30] ;
char prenom[20] ;
float heures [31] ;
struct date date_embauche ;
struct date date_poste ;
} employe, courant ;
Programmation en C – HN1- NINKO LIDWINE 52