Vous êtes sur la page 1sur 3

Les structures

I. Déclaration d’un modèle de structure


struct <Nom modèle>
{<Type> variable1 ;
<Type> variable2 ;
<Type> variableN ;
};
Cette déclaration définit un modèle de structure (Nouveau type) mais ne réserve pas de l’espace
mémoire (variable)
Exemples :
1. struct point
{ char design ;
double x ;
double y ;
};
2. struct produit
{ char code[5] ;
float pu ;
int qtite ;
};
3. struct complex
{ double reel ;
double img ;
};
II. Déclaration de variable de type structure

La déclaration d’une variable structure se fait comme suit :


struct <NomModèle> <NomVariableStructure> ;
Cette instruction permet de déclarer une variable nommée <NomVariableStructure> de type
struct <NomModèle>.
Exemples :
struct point cord1, cord2 ;
struct produit p1, p2 ;
struct complex nb1, nb2, nb3 ;
III. Utilisation d’une structure

Le travail avec les structures peut s’effectuer de deux façons différentes :


 individuellement sur chaque champ de la structure (en utilisant l’opérateur de champ "." ).
 de manière globale sur l’ensemble de la structure.

Exemples :
p1 = p2 ;
scanf("%d %d",cord1.x, cord1.y) ;
scanf("%lf", nb1.img) ;
printf("%d ",p1.qtite) ;
p1.code = 'A' ; p2.qtite += 10 ;
cord1.x++ ; cord1.y-- ;
scanf("%lf", nb1.img) ;
printf("%d ",p1.qtite) ;
p1.code = 'A' ; p2.qtite += 10 ;
cord1.x++ ; cord1.y-- ;
IV. Initialisation d’une structure
 struct produit p3 = { 'AB1', 200, 150.695 } ; // initialisation lors de la déclaration
 struct produit p3 ;

p4.code = 'Puma' ;
p4.qtite = 1500 ;
p4.pu = 30.85 ;
V. Types de structures
1. Structure comportant des tableaux

struct etudiant
{ char nom[50] ;
char pren[50] ;
float notes[10] ;
};
struct etudiant etud1, etud2 ;
Manipulation
etud1.notes[0]=20 ;
scanf("%f", etud2.notes[5]) ;
printf("%f", etud1.notes[8]) ;
strcpy(etud1.nom, "Amira") ;
2. Tableaux de structures

struct produit
{ char code ;
int qte ;
float pu ;
};
struct produit depot[25];
Manipulation
depot[0].code='A' ;
for(i=0 ; i<25 ; i++)
{ scanf("%f %d", depot[i].qte, depot[i].pu) ;
depot[i].code=getchar() ;
}
NB :
depot[i] : ième élément du tableau depot
depot[i].code : le code du produit de rang i du tableau depot
3. Structures comportant d’autres structures

struct date
{ int jj ;
int mm ;
int aa ; } ;
struct livre
{ char auteur[40] ;
int titre[50] ;
struct date date_edit
struct date date_sortie ;
};
struct livre l1, l2;
Manipulation
l1.date_edit.jj = 20 ;
l1.date_edit.mm = 12 ;
l1.date_edit.aa = 2003 ;
l1.date_edit = l2.date_sortie ;
4. Structures sans nom de modèle (type)

struct
{ char nom[20];
int age ;
} x1, x2 ;
Inconvenient :
On ne sait pas de quoi s’agit-t-il
Invisibilité lorsqu’il existe plusieurs structures sans nom de type (manque de lisibilité).
VI. Opérations sur les structures
1. Affectation

struct date d1, d2;


d1 = d2 affectation globale de variables de type structure
struct livre l1, l2;
Affectation entre les champs de structures
strcpy(l1.auteur, l2.auteur)
l1.date_edit = l2.date_sortie
2. Opérateur de champs

l1.auteur
l2.date_edit
l1.date_sortie.aa
C’est le point qui sépare le nom de structure et son champ
3. Comparaison

if(d1 == d2)  comparaison globale de variables de type structure


if( !strcmp(l1.auteur, l2.auteur))
 Comparaison entre les champs de structures
if(d1.aa >= d2.aa
4. Dimension
printf(" %d", sizeof(struct livre)) dimension d’un type structure
printf(" %d", sizeof(d1))  dimension d’une variable structure

Vous aimerez peut-être aussi