union

Sintaxis

union [Nombre_union]{
   ... /* Campos. Definidos de la misma forma que las variables */
} [Definición_de_variables];

Descripción

La estructura union tiene exactamente el mismo formato y funcionalidad que struct con la única diferencia de que todos los campos comparten el mismo espacio de memoria. Cuando se modifica un campo se modifican todos. La estructura union se puede emplear con dos finalidades: usar mejor la memoria cuando se garantiza que de entre los campos definidos uno y sólo uno tiene sentido en un momento dado y poder tener distintas visiones de la misma zona de memoria dependiendo del campo con que se acceda.

Para acceder a los campos de un union se utiliza el operador . y el operador ->.

Ejemplo

Se define un nuevo tipo, enteroCaracter, que puede contener un entero o un carácter.

typedef union {
   int i;
   char c;
}enteroCaracter;

void inicializaDosVectores(int *v, int n, char *w, int m) {
   enteroCaracter b;
   int j;
   b.i=0;
   for(j=0;j<n;j++)
      v[j]=b.i;
   b.c='a';
   for(j=0;j<m;j++)
      w[j]=b.c;
}