Поделиться через


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

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

postfix-expression . identifier
postfix-expression -> identifier

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

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

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

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

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

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;

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

См. также

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