Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188884
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: C/C++

2011-11-26 17:29:53

结构成员
可以在结构外部声明的任何变量都可以作为结构的成员。尤其是,结构成员可以是标量、数组、指针甚至是其他结构。
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
等效。

阅读(1928) | 评论(0) | 转发(0) |
0

上一篇:结构声明

下一篇:没有了

给主人留下些什么吧!~~