結構和等位成員
「成員選取運算式」(Member-selection Expression) 會參考結構和等位的成員。 這類運算式具有所選取成員的值和類型。
postfix-expression . identifier
postfix-expression –> identifier
這個清單將描述兩種形式的成員選取運算式:
在第一種形式中,postfix-expression 代表 struct 或 union 類型的值,而 identifier 會為所指定結構或等位的成員命名。 運算的值會是 identifier 的值,而且如果 postfix-expression 為左值,運算的值也會是左值。 如需詳細資訊,請參閱左值和右值運算式。
在第二種形式中,postfix-expression 代表結構或等位的指標,而 identifier 會為所指定結構或等位的成員命名。 值會是 identifier 的值,而且是左值。
這兩種形式的成員選取運算式會產生類似的效果。
實際上,如果句號前的運算式是由套用至指標值的間接取值運算子 (*) 所組成,則包含成員選取運算子 (–>) 的運算式會是使用句號 (.) 之運算式的簡短版。 因此,
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;
這個陳述式將說明如何從結構陣列選取個別結構成員。