Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+
next up previous contents index
Next: Une méthode pour alléger Up: Structures, unions et énumérations Previous: Accès aux membres de

Utilisation pratique des unions

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
Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.