结构成员
可以在结构外部声明的任何变量都可以作为结构的成员。尤其是,结构成员可以是标量、数组、指针甚至是其他结构。
struct COMPLEX {
float f;
int a[20];
long *lp;
struct SIMPLE s;
struct SIMPLE sa[10];
struct SIMPLE *sp;
};
一个结构的成员的名字可以和其他结构的成员的名字相同,所以这个结构的成员a并不会与struct SIMPLE s的成员a冲突。
结构成员的直接访问
结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数,左操作符就是结构变量的名字,右操作数就是需要访问的成员的名字。这个表达式
的结果就是指定的成员。
struct COMPLEX comp;
名字为a的成员是一个数组,所有表达式comp.a就选择了这个成员。这个表达式的结果是个数组名。这个表达式的结果是个数组名,所以你可以把它
用在任何可以使用数组名的地方。类似的,成员s是个结构,所以表达式comp.s的结果是个结构名,它可以用于任何使用普通结构变量的地方。
尤其是,我们可以把这个表达式用作另一个点操作符的左操作符,如(comp.s).a,选择结构comp的成员s(也是一个结构)的成员a。点操作符的结合性
是从左向右,所有我们可以省略括号,表达式comp.s.a表示同样的意思。
成员sa是一个结构数组,所以comp.sa是一个数组名,它的值是一个指针变量。对这个表达式使用下标引用操作符,如(comp.sa)[4]将选择一个数组
元素。但这个元素本身是一个结构,所以我们可以使用另一个点操作符取得它的成员之一。
( (comp.sa)[4] ).c
下边引用和点操作符具有相同的优先级,它们的结合性都是从左向右,所有我们可以省略所有的括号。
下面的表达式
comp.sa[4].c
等效。
阅读(2322) | 评论(0) | 转发(0) |