Il est parfois nécessaire de manipuler des variables auxquelles on désire affecter
des valeurs de types différents. Une union désigne un ensemble de variables
de types différents susceptibles d’occuper alternativement une meme zone mémoire.
Une union permet donc de définir un objet comme pouvant etre d’un
type au choix parmi un ensemble fini de types. Si les membres d’une union
sont de longueurs différentes, la place réservée en mémoire pour la représenter
correspond à la taille du membre le plus grand.
Déclaration d’une union
La déclaration et la définition d’une union ne diffèrent de celles d’une structure
que par l’utilisation du mot-clé union (qui remplace le mot-clé struct).
Dans l’exemple suivant, la variable hier de type union jour peut etre soit un caractère, soit un entier (mais pas les deux à la fois) :
#include
union jour {
char lettre;
int numero;
};
int main() {
union jour hier, demain;
hier.lettre = ’J’; //jeudi
printf("hier = %c\n",hier.lettre);
hier.numero = 4;
demain.numero = (hier.numero + 2) % 7;
printf("demain = %d\n",demain.numero);
return 0;
}
la zone mémoire allouée pour une variable de type union jour sera de sizeof(int) (2 ou 4 octets).
On aura compris qu’on accède aux éléments d’une union avec le meme opérateur de sélection (. ou ->) que celui utilisé dans les structures.
Utilisation pratique des unions:
Lorsqu’il manipule des unions, 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 etre utilisable, une union doit donc toujours etre 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 d’état sont généralement englobés à l’intérieur d’une
structure.
des valeurs de types différents. Une union désigne un ensemble de variables
de types différents susceptibles d’occuper alternativement une meme zone mémoire.
Une union permet donc de définir un objet comme pouvant etre d’un
type au choix parmi un ensemble fini de types. Si les membres d’une union
sont de longueurs différentes, la place réservée en mémoire pour la représenter
correspond à la taille du membre le plus grand.
Déclaration d’une union
La déclaration et la définition d’une union ne diffèrent de celles d’une structure
que par l’utilisation du mot-clé union (qui remplace le mot-clé struct).
Dans l’exemple suivant, la variable hier de type union jour peut etre soit un caractère, soit un entier (mais pas les deux à la fois) :
#include
union jour {
char lettre;
int numero;
};
int main() {
union jour hier, demain;
hier.lettre = ’J’; //jeudi
printf("hier = %c\n",hier.lettre);
hier.numero = 4;
demain.numero = (hier.numero + 2) % 7;
printf("demain = %d\n",demain.numero);
return 0;
}
la zone mémoire allouée pour une variable de type union jour sera de sizeof(int) (2 ou 4 octets).
On aura compris qu’on accède aux éléments d’une union avec le meme opérateur de sélection (. ou ->) que celui utilisé dans les structures.
Utilisation pratique des unions:
Lorsqu’il manipule des unions, 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 etre utilisable, une union doit donc toujours etre 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 d’état sont généralement englobés à l’intérieur d’une
structure.
Jeu 28 Nov - 8:07 par arsenepoutsi
» CCNA version 4 français
Dim 31 Mar - 15:15 par kadhouceeee
» Trés important " Livre exercices en langage C ( claude delannoy) "
Jeu 27 Sep - 16:31 par latifa oustouh
» Ulead VideoStudio 11.5.0157.2 Plus + Crack Collection
Jeu 26 Avr - 9:51 par miloduvi
» Langage IDL(Interface Definition Language)
Mar 27 Sep - 13:02 par Abdelkhalek Bakkari
» demande cours PHP
Jeu 2 Juin - 11:23 par elasriahmed
» exemple page web réaliser avec du html et JavaScript
Lun 30 Mai - 4:05 par ouh.rouchan.zakaria
» cours group2_ 2année 2011
Dim 20 Mar - 15:35 par El Maligno Angelo
» Cours : Infrastructures Réseaux 2003 Server
Mar 15 Fév - 6:55 par jettjackson
» cours officiel de CCNA 2
Mar 18 Jan - 13:53 par agares