Partager la mémoire entre plusieurs variables.

Les union

union

Voir version :

Pas de dépendances

Télécharger :

#include <stdio.h>

union test
{
    char d;
    int c;
    char s[5];
};

int main()
{
    union test T;
    printf("Sizeof : %d\n",sizeof(union test));
    T.c=3;
    printf("c = %d\n",T.c);
    T.s[3]=1;                        // bouffe l'espace de c.
    printf("c = %d\n",T.c);
    return 0;
}



Commentaires


  union est fait pour économiser de la mémoire.

  ça marche comme un struct, sauf que les variables qu'il y a à l'intérieur n'ont pas chacune leur espace,
  non, elles ont le MEME espace.

  C'est à dire que si vous écrivez dans l'une et que vous en lisez une autre, il y a toutes les chance
  que l'une aie écrasé les données de l'autre.

  Intéret : ça prend moins de place ! 
  Au lieu de prendre en mémoire la somme de toutes les variables, ça prend la place nécessaire pour stocker
  la plus grosse uniquement.
  
  Utilisation : si vous utilisez une structure et que vous savez pertinament que vous n'utiliserez
  qu'une des données dedans pour une instance donnée, ça marche.
  
	Exemple : vous faites un union avec un double, et un int.
	Cet union servira a stocker un nombre. Selon l'endroit de votre programme, vous utiliserez l'un 
	ou l'autre. Vous pourrez changer quand vous voudrez. Il faut juste rester rigoureux...

	Personnellement, je n'utilise pas souvent union. C'était plus utilisé jadis quand les PC avaient
	peu de mémoire, et qu'il fallait l'économiser.

    Mais enfin bon, voila, union existe.