Členové struktury a sjednocení
„Výraz výběru členů“ odkazuje na členy struktury a sjednocení. Takový výraz má hodnotu a typ vybraného členu.
postfix-expression
.
identifier
postfix-expression
->
identifier
Seznam popisuje dva typy výrazů výběru členů:
V prvním formuláři
postfix-expression
představuje hodnotustruct
nebounion
typ aidentifier
pojmenuje člena zadané struktury nebo sjednocení. Hodnota operace jeidentifier
hodnota a je l-hodnota, pokudpostfix-expression
je l-hodnota. Další informace najdete v tématu Výrazy L-Value a R-Value.Ve druhém formuláři
postfix-expression
představuje ukazatel na strukturu nebo sjednocení aidentifier
pojmenuje člena zadané struktury nebo sjednocení. Hodnota jeidentifier
hodnota a je l-hodnota.
Oba typy výrazů výběru členů mají podobné funkce.
Výraz zahrnující operátor výběru člena (->
) je ve skutečnosti zkrácenou verzí výrazu používající tečku (.
), pokud se výraz před tečkou skládá z operátoru nepřímého převodu (*
) použitého na hodnotu ukazatele. Z toho plyne:
expression->identifier
je ekvivalentem
(*expression).identifier
je-li expression
hodnota ukazatele.
Příklady
Následující příklady odkazují na tuto deklaraci struktury. Informace o operátoru indirection (*
) použitém v těchto příkladech najdete v tématu Indirection a Address-of Operators.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Výraz výběru členů struktury item
vypadá takto:
item.sp = &item;
V příkladu je adresa item
struktury přiřazena členu sp
struktury. To znamená, že item
obsahuje ukazatel na sebe.
(item.sp)->a = 24;
V tomto příkladu se výraz item.sp
ukazatele používá s operátorem výběru člena (->
) k přiřazení hodnoty členu a
.
list[8].b = 12;
Tento příkaz ukazuje, jak vybrat jednotlivý člen struktury z pole struktur.