© Éditions Eyrolles
177
chapitre n° 9
Les structures et les énumérations
7 Transmission d’une structure en valeur de retour d’une fonction
Bien que cela soit peu usité, sachez que C vous autorise à réaliser des fonctions qui fournissent
en retour la valeur d’une structure. Par exemple, avec le modèle enreg précédemment défini,
nous pourrions envisager une situation de ce type :
struct enreg fct (...)
{
struct enreg s ;
/* structure locale à fct */
.....
return s ;
/* dont la fonction renvoie la valeur */
}
Notez bien que s aura dû soit être créée localement par la fonction (comme c’est le cas ici),
soit éventuellement reçue en argument.
Naturellement, rien ne vous interdit, par ailleurs, de réaliser une fonction qui renvoie comme
résultat un pointeur sur une structure. Toutefois, il ne faudra pas oublier qu’alors la structure
en question ne peut plus être locale à la fonction ; en effet, dans ce cas, elle n’existerait plus
dès l’achèvement de la fonction... (mais le pointeur continuerait à pointer sur quelque chose
d’inexistant !). Notez que cette remarque vaut pour n’importe quel type autre qu’une structure.
8 Les énumérations
Un type énumération est un cas particulier de type entier et donc un type scalaire (ou simple).
Son seul lien avec les structures présentées précédemment est qu’il forme, lui aussi, un type
défini par le programmeur.
8.1 Exemples introductifs
Considérons cette déclaration :
enum couleur {jaune, rouge, bleu, vert} ;
Elle définit un type énumération nommé couleur et précise qu’il comporte quatre valeurs
possibles désignées par les identificateurs jaune, rouge, bleu et vert. Ces valeurs constituent les constantes du type couleur.
Il est possible de déclarer des variables de type couleur :
enum couleur c1, c2 ;
/* c1 et c2 sont deux variables */
/* de type enum couleur
*/
Delannoy Livre.book Page 177 Mercredi, 6. mai 2009 4:26 16
Précédent

- 190/281

Suivant