Члены структур и объединений
Выражение выбора члена ссылается на члены структур и объединений. Такое выражение имеет значение и тип выбранного члена.
postfix-expression
.
identifier
postfix-expression
->
identifier
В следующем списке приводится описание двух форм выражений выбора члена.
В первой форме
postfix-expression
представляет значениеstruct
типа илиunion
иidentifier
присваивает имя члену указанной структуры или объединения. Значение операции равно значению иidentifier
является l-значением, еслиpostfix-expression
является l-значением. Дополнительные сведения см. в разделах L-Value и R-Value Expressions.Во второй форме
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;
На примере этого оператора показано, как выбрать отдельный член структуры из массива структур.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по