在解决实际问题时,往往需要同时定义一组数据,例如,在学生管理系统中,一个学生的信息包括学号、姓名、性别、年龄、成绩、家庭地址等项。可以看出这组数据是同属于一人,但它们具有不同的数据类型。学号可定义为整型或字符型,姓名应为字符型,性别应为字符型,年龄应为整型,成绩可为整型或浮点型,家庭地址应为字符型。这组数据不能用一个数组来存放,因为数组中各元素的类型和长度都必须一致。若通过定义多个变量来表示,则无法体现其内在联系,为了解决这个问题,C语言提供一种可以将不同类型数据组合在一起的数据类型,称为结构体(structure),它相当于其他高级语言中的记录(record)。
结构体是一种构造类型,在使用之前必须先声明它,也就是构造它,如同在使用函数之前要先声明函数一样。声明一个结构体类型的一般形式为:
struct结构体名
{成员表列};
成员表列由若干个成员组成,每个成员都是该结构体的一个组成部分。对每个成员也必须作类型说明,其形式为:
类型名 成员名;
需要注意:结构体类型的名字是由关键字struct和结构体名组成的。结构体名是自定义的,以便于区别其他结构体类型。成员表列花括号后的分号是必不可少的。成员名的命名规则与变量名相同。结构体声明之后,就可进行变量定义。
例如:
struct Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
需要注意:在这个结构体声明中,结构体名为Student,该结构体由6个成员组成。第1个成员名为num,整型变量;第2个成员名为name,字符数组;第3个成员名为sex,字符型变量;第4个成员们名为age,整型变量;第5个成员名为score,浮点型变量;第6个成员名为addr,字符数组。在这个例子当中,每一个成员都是一个基本数据类型。在声明中,成员也可以属于另一个结构体类型。
例如:(www.xing528.com)
struct Date
{
int month;
int day;
int year;
};
struct Student
{
int num;
char name[20];
char sex;
int age;
struct Date birthday;
char addr[30];
};
图8.1 结构体嵌套示例图
struct Date是一个代表日期的结构体类型,包含3个成员:month、day、year。在声明struct Student类型时,将成员birthday指定为struct Date类型。struct Date与其他基本类型一样可以用来声明成员的类型。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。