结构和联合成员
“成员选择表达式”是指结构和联合的成员。 此类表达式具有选定成员的值和类型。
postfix-expression
.
identifier
postfix-expression
->
identifier
此列表描述了成员选择表达式的两种形式:
在第一种形式中,
postfix-expression
表示类型为struct
或union
的值,而identifier
为指定的结构或联合的成员命名。 运算的值是identifier
的值且是一个左值(如果postfix-expression
是左值)。 有关详细信息,请参阅左值和右值表达式。在第二种形式中,
postfix-expression
表示指向结构或联合的指针,而identifier
命名指定的结构或联合的成员。 该值是identifier
的值且是左值。
成员选择表达式的两种形式具有类似的效果。
实际上,如果句点前面的表达式由适用于指针值的间接寻址运算符 (*
) 构成,则包含成员选择运算符 (->
) 的表达式是使用句点 (.
) 的表达式的速记版。 因此,
expression->identifier
等效于
(*expression).identifier
当 expression
为指针值时。
示例
以下示例引用此结构声明。 有关这些示例中使用的间接寻址运算符 (*
) 的信息,请参阅间接寻址运算符和 Address-of 运算符。
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;
此语句演示如何从结构数组中选择单个结构成员。