Next: Une méthode pour alléger
Up: Structures, unions et énumérations
Previous: Accès aux membres de
Lorsqu'il manipule des variables de type union, le programmeur n'a
malheureusement aucun moyen de savoir à un instant donné, quel est le
membre de l'union qui possède une valeur.
Pour être utilisable, une union doit donc toujours être associée à une
variable dont le but sera d'indiquer le membre de l'union qui est valide.
En pratique, une union et son indicateur sont généralement englobés à
l'intérieur d'une structure.
Dans l'exemple précédent, on procédera de la manière suivante :
enum type {ENTIER, FLOTTANT};
struct arith
{
enum type typ_val; /* indique ce qui est dans u */
union
{
int i;
float f;
} u;
};
la
struct arith a deux membres
typ_val de type
int,
et
u de type union d'
int et de
float.
On déclarera des variables par :
struct arith a1,a2;
puis on pourra les utiliser de la manière suivante :
a1.typ_val = ENTIER;
a1.u.i = 10;
a2.typ_val = FLOTTANT;
a2.u.f = 3.14159;
Si on passe en paramètre à une procédure un pointeur vers une
struct arith,
la procédure testera la valeur du membre
typ_val pour savoir
si l'union reçue possède un entier ou un flottant.
Bernard Cassagne
1998-12-09