Estrutura e membros da união
Uma "expressão de seleção de membro" refere-se aos membros do estruturas e uniões.Uma expressão como essa tem o valor e o tipo do membro selecionado.
postfix-expression . identifier
postfix-expression –> identifier
Esta lista descreve as duas formas de expressões a seleção de membro:
No primeiro formulário, postfix-expressão representa um valor de struct ou união tipo, e identificador nomeia um membro da estrutura especificada ou união.O valor da operação é de identificador e é um l-value, se postfix-expressão é um valor de l.Consulte L-Value e expressões de R-Value para obter mais informações.
Na segunda forma, postfix-expressão representa um ponteiro para uma estrutura ou união, e identificador nomeia um membro da estrutura especificada ou união.O valor é de identificador e é um valor de l.
As duas formas de expressões de seleção de membro têm efeitos semelhantes.
Na verdade, uma expressão que envolvem o operador de seleção de membro (– >) é uma versão abreviada de uma expressão usando o período (.) se a expressão antes do período consiste no operador de indireção (*) aplicada a um valor de ponteiro.Portanto,
expression –> identifier
Equivale a
(*expression) . identifier
Quando expressão é um valor do ponteiro.
Exemplos
Consultem os exemplos a seguir essa declaração de estrutura.Para obter informações sobre o operador de indireção (*) usadas nestes exemplos, consulte indireção e operadores adress-of.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Uma expressão de seleção de membro para o item estrutura tem esta aparência:
item.sp = &item;
No exemplo acima, o endereço da item estrutura é atribuída para o sp membro da estrutura.Isso significa que item contém um ponteiro para si mesmo.
(item.sp)–>a = 24;
Neste exemplo, a expressão do ponteiro item.sp é usado com o operador de seleção de membro (– >) para atribuir um valor para o membro a.
list[8].b = 12;
Esta instrução mostra como selecionar um membro individual de estrutura de uma matriz de estruturas.