Notions de bases en C

 

Les unions :

Les unions sont similaires aux structures, mais tous les membres d’une union partagent un même espace mémoire. Une union est une variable capable de stocker différents types de données.

Propriétés :

  • Une union peut contenir un grand nombre de membre ;
  • Les membres peuvent être de n’importe quel type ;
  • L’espace mémoire d’une union est celui nécessaire pour le plus large de ses membres ;
  • Les unions utilisent exactement la même syntaxe que les structures, le mot clé struct est remplacé par union.

Déclaration d’une union :

Syntaxe de définition :

Union nomUnion
 {
    type1 nomMembre1 ;
           .
           .
    typeN nomMembreN ;
 } ;

Syntaxe de déclaration :

union nomUnion y ;

Exemple :

Union expleUnion
 {
    char a ;
    int b ;
    float c ;
 };

//Déclaration

union expleUnion z ;

On peut déclarer plusieurs objets du même type que z. Par exemple :

union expleUnion x, y ;

Autre syntaxe de déclaration:

union nomUnion
 {
    type1 nomMembre1 ;
           .
           .
    typeN nomMembreN ;
 } nomVariableUnion;

Il est possible de réaliser une union comportant par exemple un type de base, mais aussi un type structure.

Exemple :

struct complexe
 {
    float re ;    //partie réelle
    float im ;   //partie imaginaire
    float module ;
 } ;
 //
union
 {
   int value ;
   struct complexe number ;
 } c_nbr ;

On peut ainsi accéder au membre value de type entier de c_nbr, par :

c_nbr.value

De même pour d’autres parties de c_nbr, on peut y accéder en les désignant par :

c_nbr.number.re

c_nbr.number.im

c_nbr.number.module

Dans les propriétés, nous avons vu que les membres d'une union partagent un même espace mémoire avec celui alloué au plus large d'entre eux.

Prenons cet exemple:

union expleUnion
 {
   char a;
   int b;
   long int c;
 } exple_1;

Ici, l'espace mémoire total alloué à la variable d'union exple_1 est égal à la taille de long int c, soit quatre octets.

Les unions sont souvent utilisées pour préserver l'espace mémoire d'une application. Certaines variables dont l'usage est temporaire et qui n'auront aucune chance d'être utilisées en même temps peuvent être déclarées dans une union.

Ce site web utilise des cookies

Certains d’entre eux sont essentiels pour son fonctionnement et d’autres nous aident à améliorer l’expérience utilisateur (cookies traceurs). Vous pouvez décider vous-même si vous autorisez ou non ces cookies. Merci de noter que, si vous les rejetez, certaines fonctionnalités du site pourront être défaillantes.