提示:本文是对C语言基础知识:结构与联合部分的回顾总结。
结构基础知识
聚合数据类型(aggregate data type) 能够同时存储超过一个的单独数据。
C提供了两种类型的聚合数据类型:数组 和 结构 。
数组是相同类型的元素的集合,它的每个元素是通过下标引用或指针间接访问来选择的。
结构 也是一些值的集合,这些值称为它的 成员(member) ,但一个结构的各个成员可能具有不同的类型。
每个结构成员都有自己的名字,它们通过名字访问。
结构声明
在声明结构时,必须列出它包含的所有成员。这个列表包括每个成员的类型和名字。
struct tag {
member-list } variable-list;
/*
** tag:结构标签
** member-list:结构成员列表
** varible-list:结构变量列表
*/
如下例所示:
struct (
int a;
char b;
float c;
} x, y[20], *z;
/*
** 这个声明创建了一个名叫 x 的变量,它包含三个成员:一个整数、一个字符和一个浮点数;
** 还创建了一个数组 y ,它包含了 20 个结构;
** 也创建了一个指针 z ,它指向这个类型的结构。
*/
或者用 标签名(tag)声明,如下:
struct SIMPLE {
int a;
char b;
float c;
};
struct SIMPLE x;
struct SIMPLE y[20], *z;
声明结构时可以使用的另一种良好技巧就是用 typrdef 创建一种新的类型。如下所示:
typedef struct {
int a;
char b;
float c;
} Simple;
/*
** 此技巧和声明一个结构标签的效果几乎相同,
** 区别在于 Simple 是个类型名而不是个结构标签。
*/
Simple x, y[20], *z;
结构成员
可以在一个结构外部声明的任何变量都可以作为结构的成员。
struct COMPLEX {
float f;
int a[20];
long