Compartilhar via


Declarações de união

Uma "declaração de união" Especifica um conjunto de valores de variáveis e, opcionalmente, uma marca a união de nomeação.Os valores de variáveis são denominados "membros" da união e podem ter diferentes tipos.Uniões são semelhantes aos "variant registros" em outros idiomas.

Sintaxe

  • especificador de struct ou união:
    identificador de estrutura ou união opt**{** struct-declaração-list }

    identificador de estrutura ou união

  • estrutura ou união:
    struct

    União

  • lista de declaração struct:
    declaração de struct

    declaração de struct da lista de declaração struct

O conteúdo de união é definido como

  • declaração de struct:
    lista de qualificador de especificador struct-Declarador-list ;

  • lista de qualificador de especificador de:
    especificador de tipo especificador qualificador lista opt

    qualificador de tipo especificador qualificador lista opt

  • lista de Declarador de struct:
    Declarador de struct

    lista de Declarador de struct , Declarador de struct

Uma variável com união tipo armazena um dos valores definidos por esse tipo.As mesmas regras regem as declarações de estrutura e união.Uniões também podem ter bits campos.

Membros de uniões não podem ter um tipo incompleto, digite void, ou o tipo de função.Portanto, os membros não podem ser uma instância da união mas podem ser ponteiros para o tipo de união que está sendo declarado.

Uma declaração de tipo de união é apenas um modelo.Memória não está reservada até que a variável é declarada.

ObservaçãoObservação

Se uma união de dois tipos é declarada e um valor é armazenado, mas a união é acessada com o outro tipo, os resultados não são confiáveis.Por exemplo, uma união de float e int foi declarado.A float valor é armazenado, mas o programa mais tarde acessa o valor como um int.Em tal situação, o valor dependeria do armazenamento interno de float valores.O valor inteiro não é confiável.

Exemplos

A seguir é exemplos de uniões:

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

Este exemplo define uma variável de união com sign digite e declara uma variável chamada number que tem dois membros: svar, um inteiro, e uvar, um inteiro sem sinal.Essa declaração permite que o valor atual de number sejam armazenadas como uma assinatura ou um valor não assinado.A marca associada a esse tipo de união é sign.

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

O screen matriz contém elementos de 2.000.Cada elemento da matriz é uma união individual com dois membros: window1 e screenval.O window1 membro é uma estrutura com dois membros do campo de bit, icon e color.The screenval member is an int.Em qualquer momento, cada elemento de união mantém um a int representados por screenval ou a estrutura representados por window1.

Específicos do Microsoft

Uniões aninhados podem ser declarados anonimamente quando eles são membros de outra estrutura ou união.Este é um exemplo de uma união sem nome:

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 */

Uniões são geralmente aninhados dentro de uma estrutura que inclui um campo dando o tipo de dados contidos na união em um determinado momento.Este é um exemplo de uma declaração para tal uma união:

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

Consulte estrutura e os membros da união para obter informações sobre como fazer referência uniões.

Específicos do Microsoft final

Consulte também

Conceitos

Declaradores e declarações de variável