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:
structUnião
lista de declaração struct:
declaração de structdeclaraçã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 optqualificador de tipo especificador qualificador lista opt
lista de Declarador de struct:
Declarador de structlista 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çã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