Declaraciones de unión

Una “declaración de unión” especifica un conjunto de valores variables y, opcionalmente, una etiqueta llamando a la combinación.Los valores variables se denominan “miembros” de la unión y pueden tener diferentes tipos.las uniones son similares a los “registros variables” en otros lenguajes.

Sintaxis

  • struct-o-unión-especificador:
    struct-declaración-lista } de**{** IDoptde la struct-o-unión

    identificador de la struct-o-unión

  • struct-o-unión:
    struct

    union

  • struct-declaración-lista:
    struct-declaración

    struct-declaración de la struct-declaración-lista

el contenido de la unión es definido ser

  • struct-declaración:
    struct-declarante-lista ; de la especificador-calificador-lista

  • especificador-calificador-lista:
    especificador-calificador-lista de especificador de tipo opt

    especificador-calificador-lista calificador de tipo opt

  • struct-declarante-lista:
    struct-declarante

    struct-declarante de**,** de la struct-declarante-lista

Una variable con el tipo de union almacena uno de los valores definidos por el tipo.Las mismas reglas rigen declaraciones de estructura y de unión.Las uniones también pueden tener campos de bits.

Los miembros de las uniones no pueden tener un tipo incompleto, escribir void, o tipo de función.Por consiguiente los miembros no pueden ser una instancia de unión pero pueden ser punteros a declarar tipos de unión.

Una declaración de tipos de unión es una plantilla solo.Memoria no se reserva hasta que se declara la variable.

[!NOTA]

Si declara una combinación de dos tipos y se almacena un valor, pero la combinación se tiene acceso con otro tipo, los resultados no son predecibles.Por ejemplo, una combinación de Hacer flotante y de int se declara.Se almacena un valor de Hacer flotante , pero el programa tiene acceso posterior al valor como int.En esta situación, el valor dependería de almacenamiento interno de los valores de Hacer flotante .El valor entero no sería confiable.

Ejemplos

los siguientes son ejemplos de uniones:

union sign   /* A definition and a declaration */
{
    int svar;
    unsigned uvar;
} number;

Este ejemplo define una variable de la combinación con sign escribe y declara una variable denominada number con dos miembros: svar, un entero, y uvar, un entero sin signo.Esta declaración permite que el valor actual de number está almacenado como un valor con signo o sin signo.La etiqueta asociado a este tipo de unión es sign.

union               /* Defines a two-dimensional */
{                   /*  array named screen */
    struct    
    { 
      unsigned int icon : 8;  
      unsigned color : 4;
    } window1;
    int screenval;
} screen[25][80];

La matriz de screen contiene 2.000 elementos.Cada elemento de la matriz es una combinación individual con dos miembros: window1 y screenval.El miembro de window1 es una estructura con dos miembros, icon y colorde campo de bits.el miembro de screenval es int.En un momento dado, cada elemento de unión contiene int representada por screenval o estructura representada por window1.

Específicos de Microsoft

Las uniones anidados se pueden declarar anónimo cuando son miembros de otra estructura o unión.éste es un ejemplo de una unión anónima:

struct str
{
    int a, b;
    union            / * Unnamed union */
    {
      char c[4];
      long l;
      float f;
   };
   char c_array[10];
} my_str;
.
.
.
my_str.l == 0L;  /* A reference to a field in the my_str union */

Las uniones se anidan a menudo dentro de una estructura que incluye un campo que proporciona el tipo de datos contenidos en la combinación en un momento dado.Éste es un ejemplo de una declaración para este tipo de combinación:

struct x
{
    int type_tag;
    union
    {
      int x;
      float y;
    }
}

Vea Estructura y unión para obtener información sobre cómo hacer referencia a las uniones.

Específico de Microsoft de FINAL

Vea también

Conceptos

Declarantes y declaraciones de variable