Partilhar via


Membros de união e estrutura

Uma "expressão de seleção de membros" faz referência a membros de estruturas e de uniões. Essas expressões têm o valor e o tipo do membro selecionado.

postfix-expression . identifier
postfix-expression -> identifier

A lista a seguir descreve os dois formatos de expressões de seleção de membros:

  1. No primeiro formato, postfix-expression representa um valor do tipo struct ou union e identifier nomeia um membro da estrutura ou da união especificada. O valor da operação é o de identifier e é um l-value se postfix-expression for um l-value. Para obter mais informações, confira Valor L e expressões de valor R.

  2. No segundo formato, postfix-expression representa um ponteiro para uma estrutura ou união e identifier nomeia um membro da estrutura ou união especificada. O valor é o de identifier e um l-value.

Os dois formatos de expressões de seleção de membros têm efeitos semelhantes.

Na verdade, uma expressão envolvendo o operador de seleção de membro (->) é uma versão abreviada de uma expressão usando o ponto (.) quando a expressão antes do ponto consiste no operador de indireção (*) aplicado a um valor de ponteiro. Portanto,

expression->identifier

é equivalente a

(*expression).identifier

quando expression for um valor do ponteiro.

Exemplos

Os exemplos a seguir fazem referência a essa declaração de estrutura. Para obter informações sobre o operador de indireção (*) usado nestes exemplos, consulte o tópico sobre operadores Indirection e Address-of.

struct pair
{
    int a;
    int b;
    struct pair *sp;
} item, list[10];

Uma expressão de seleção de membros para a estrutura item é semelhante a:

item.sp = &item;

No exemplo, o endereço da estrutura item é atribuído ao membro sp da estrutura. Isso significa que item contém um ponteiro para si mesmo.

(item.sp)->a = 24;

Neste exemplo, a expressão de ponteiro item.sp é usada com o operador de seleção de membro (->) para atribuir um valor ao membro a.

list[8].b = 12;

Essa instrução mostra como selecionar um membro individual da estrutura em uma matriz de estruturas.

Confira também

Operadores de acesso a membros: . e ->