Lycée
Omar Ibn Abdelaziz
C P G E Oujda
SPE
Structures
Les
structures sont des variables composées de champs de types différents. Elles se
déclarent sous la syntaxe suivante :
struct nomopt
{ declaration ;
declaration ;
….
}
A
la suite du mot-clé struct
on indique :
-facultativement, le nom que l'on souhaite
donner à la structure. Par la suite, l'expression
struct
nom pourra être employée comme une sorte de nom de type
;
-
facultativement, entre accolades, la liste des déclarations des champs de la
structure. Chaque champ peut avoir un type quelconque (y compris un autre type
structure, bien sur) ;
-facultativement,
la liste des variables que l'on définit ou déclare comme possédant la structure
ici définie.
Exemple.
struct fiche {
int
numero;
char nom[32] ;
char prenom[32];
}
a, b, c;
Cette
déclaration introduit trois variables a,
b et c, chacune
constituée des trois champs numero,
nom et prenom
; en même temps elle donne à cette structure le nom fiche.
Plus loin, on pourra déclarer de nouvelles variables analogues à a,
b et c en écrivant
simplement :
struct fiche x, y;
(remarquez
qu'il faut écrire
struct fiche et
non pas fiche ).
Nous aurions pu aussi bien faire les déclarations :
struct fiche {
int
numero;
char nom[32], prenom[32];
};
struct fiche a, b, c,
x, y;
ou encore
struct {
int
numero;
char nom[32], prenom[32];
} a, b, c, x, y;
mais cette dernière forme
nous aurait empêchée par la suite de déclarer aussi facilement d'autres
variables de même type, ou de créer un pointeur sur une telle structure (ce qui
est indispensable dans le cas des structuresrécursives,
par exemple les maillons des listes chaînées).
Comme
dans beaucoup de langages, on accède aux champs d'une variable de type
structure au moyen de l'opérateur ‘ .’
Exemple 1:
a.numero = 1234;
Exemple
2:
Struct {
char nom[20] ;int age ;} marc,luc,jean ;
…
Strcpy(marc.nom, ‘’mohamed’’) ;
Marc.age=24 ;
….
On
peut renomer une structure avant de l’utiliser :
Typedef struct
{ char nom[20] ;int
age ;} personne;
…
Personne
marc,luc,jean;
Les
structures supportent les manipulations
globales
:
-
on peut affecter une expression d'un type structure à une variable de type
structure (pourvu que ces deux types soient identiques) ;
-
les structures sont passées par valeur lors
de l'appel des fonctions ;
-le
résultat d'une fonction peut être une structure.
La
possibilité pour une fonction de rendre une structure comme résultat est
officielle.
Initialisation.
Une
variable de type structure peut être initialisée au moment de sa déclaration,
du moins dans le cas d'une variable globale. La syntaxe est la même que pour un
tableau.
Exemple :
struct fiche {
int
numero;
char nom[32], prenom[32];
}
u = { 1234, "BENALI",
"Mohammed" };
Comme
pour les tableaux, si on indique moins de valeurs que la structure ne comporte
de champs, alors les champs restants sont initialisés par des zéros.
Donner
plus de valeurs qu'il n'y a de champs constitue une erreur.
Exercice :
Ecrire
une fonction qui affiche le nom ,le prénom ainsi que
l’age d’une personne (en utilisant une structure)
M.Naji