vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 30 déc. 2005 à 17:19
Ca permet juste d'interpréter un même donnée de différentes manière je crois (j'ai jamais utilisé ca en fait). A mon avis ca évite juste de devoir faire des cast tout le temps. Ca n'a pas la même fonction qu'une classe ou une structure
Vous n’avez pas trouvé la réponse que vous recherchez ?
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 31 déc. 2005 à 09:45
D'après ce que je sais, les unions permettent d'affecter un seul espace mémoire à plusieurs variables...
Par exemple :
union
{
int v1;
float v2;
};
La taille de cette union sera bien 4 octets (sur une
machine 32 bits :p). En revanche, tu ne peux accéder en même temps à
plusieurs variables d'une union Puisqu'elles partagent le même espace
mémoire, lorsque tu en modifies une, tu modifies l'autre...Ca permet
d'économiser l'espace mémoire, mais faut faire hyper gaffe. Si tu fais
par exemple v1=17, la valeur de v2 sera également modifiée...
Donc, ce n'est utile que pour regrouper des groupes de variables, dont tu n'en utilises qu'une a la fois...
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 31 déc. 2005 à 11:19
C'est exactement ca Platon179, mais généralement un fait une union entre une variable entière et un champs de bit de même taille. Comme ca ont peut accèder à la valeur complète ou un bit en particulier sans cast, masque et autre artifice de syntaxe tels q'un pointeur.
Leur utilitée reste extrèmement rare puisque on à tous les artifices cité plus haut pour s'en passer. Car faire un union ca pas terrible pour la lisibilitée du code, si tu lit var1 et que tu zap que c'est le même emplacement memoire que var2 tu passera certainement à coter d'un point important du code.
Le travail c'est la santé, ne rien faire c'est la préservé !!!