Члены структур и объединений

Выражение выбора члена ссылается на члены структур и объединений. Такое выражение имеет значение и тип выбранного члена.

postfix-expression . identifier
postfix-expression -> identifier

В следующем списке приводится описание двух форм выражений выбора члена.

  1. В первой форме postfix-expression представляет значение struct типа или union и identifier присваивает имя члену указанной структуры или объединения. Значение операции равно значению и identifier является l-значением, если postfix-expression является l-значением. Дополнительные сведения см. в разделах L-Value и R-Value Expressions.

  2. Во второй форме postfix-expression представляет указатель на структуру или объединение и identifier присваивает имя члену указанной структуры или объединения. Значение равно значению и identifier является l-значением.

Две формы выражений выбора члена оказывают аналогичное влияние.

Фактически выражение, включающее оператор выбора членов (->), является сокращенной версией выражения, использующим точку (.), если выражение до точки состоит из оператора косвенного обращения (*), примененного к значению указателя. Поэтому

expression->identifier

эквивалентно

(*expression).identifier

значение , когда expression является значением указателя.

Примеры

Данное объявление структуры представлено в следующих примерах. Дополнительные сведения об операторе косвенного обращения (*), используемом в этих примерах, см. в статье Операторы косвенного обращения и определения адреса.

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

Выражение выбора члена для структуры item выглядит следующим образом.

item.sp = &item;

В этом примере адрес item структуры назначается sp члену структуры. Это означает, что item содержит указатель на себя.

(item.sp)->a = 24;

В этом примере выражение item.sp указателя используется с оператором выбора элемента (->) для присвоения значения члену a.

list[8].b = 12;

На примере этого оператора показано, как выбрать отдельный член структуры из массива структур.

См. также

Операторы доступа к членам: . и ->