Члены структур и объединений
Выражение выбора члена ссылается на члены структур и объединений. Такое выражение имеет значение и тип выбранного члена.
postfix-expression
.
identifier
postfix-expression
->
identifier
В следующем списке приводится описание двух форм выражений выбора члена.
В первой форме
postfix-expression
представляет значениеstruct
илиunion
тип иidentifier
именует член указанной структуры или объединения. Значение операции — этоidentifier
значение l-value, еслиpostfix-expression
это l-значение. Дополнительные сведения см. в разделе "Выражения L-Value" и "R-Value".Во второй форме
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;
На примере этого оператора показано, как выбрать отдельный член структуры из массива структур.