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