Partilhar via


Estrutura e Membros da União

Uma "expressão de seleção de membros" refere-se aos membros de estruturas e sindicatos. Tal expressão tem o valor e o tipo do membro selecionado.

postfix-expression . identifier
postfix-expression -> identifier

Esta lista descreve as duas formas das expressões de seleção de membros:

  1. No primeiro formulário, postfix-expression representa um valor ou union tipo e structidentifier nomeia um membro da estrutura ou união especificada. O valor da operação é o de identifier e é um valor l se postfix-expression for um valor l. Para obter mais informações, consulte Expressões de valor L e valor R.

  2. No segundo formulário, 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 valor l.

As duas formas de expressões de seleção de membros têm efeitos semelhantes.

Na verdade, uma expressão envolvendo o operador de seleção de membros (->) é uma versão abreviada de uma expressão usando o ponto (.) se a expressão antes do período consiste no operador indirection (*) aplicado a um valor de ponteiro. Por conseguinte,

expression->identifier

é equivalente a

(*expression).identifier

quando expression é um valor de ponteiro.

Exemplos

Os exemplos a seguir referem-se a essa declaração de estrutura. Para obter informações sobre o operador indirection (*) usado nesses exemplos, consulte Indirection e Address-of Operators.

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

Uma expressão de seleção de membros para a estrutura tem esta item aparência:

item.sp = &item;

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

(item.sp)->a = 24;

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

list[8].b = 12;

Esta instrução mostra como selecionar um membro da estrutura individual a partir de uma matriz de estruturas.

Ver também

Operadores de Acesso de Membros: . e ->