Члены структур и объединений
Выражение выбора члена ссылается на члены структур и объединений. Такое выражение имеет значение и тип выбранного члена.
postfix-expression . identifier
postfix-expression –> identifier
В следующем списке приводится описание двух форм выражений выбора члена.
В первой форме postfix-expression представляет значение типа struct или union, а identifier именует член указанной структуры или объединения. Значение операции совпадает с identifier и является l-значением, если postfix-expression является l-значением. Дополнительные сведения см. в разделе Выражения l-значений и r-значений.
Во второй форме postfix-expression представляет указатель на структуру или объединение, а identifier именует член указанной структуры или объединения. Это значение совпадает с identifier и является l-значением.
Две формы выражений выбора члена оказывают аналогичное влияние.
Фактически, выражение, включающее оператор выбора члена (–>), — это сокращенная версия выражения, использующего точку (.), если выражение перед точкой включает оператор косвенного обращения (*), примененный ко значению указателя. Поэтому
expression –> identifier
эквивалентно
(*expression) . identifier
если выражение — значение указателя.
Примеры
Данное объявление структуры представлено в следующих примерах. Дополнительные сведения об операторе косвенного обращения (*), используемом в этих примерах, см. в разделе Операторы косвенного обращения и определения адреса.
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;
На примере этого оператора показано, как выбрать отдельный член структуры из массива структур.