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


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

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

postfix-expression . identifier 
postfix-expression –> identifier

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

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

  2. Во второй форме 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;

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

См. также

Ссылки

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