结构和联合成员

“成员选择表达式”是指结构和联合的成员。 此类表达式具有所选成员的值和类型。

postfix-expression . identifier
postfix-expression -> identifier

此列表描述了成员选择表达式的两种形式:

  1. 在第一个窗体中, postfix-expression 表示值 structunion 类型,并 identifier 命名指定结构或联合的成员。 作的值是 l identifier 值,如果 postfix-expression 为 l 值,则为 l 值。 有关详细信息,请参阅 L-Value 和 R-Value 表达式

  2. 第二种形式表示 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;

此语句演示如何从结构数组中选择单个结构成员。

另请参阅

成员访问运算符:. 和->