《C语言程序设计》第八章 结构体、共同体和枚举
- 格式:pdf
- 大小:119.53 KB
- 文档页数:9
第八章结构体、联合与枚举第八章结构体、联合与枚举8.1 概述到目前为止,我们已经学过的数据类型有整型、字符型和实型等基本类型,也学过了数组――一种构造类型数据,数组中的各个元素属于同一种类型。
但在实际应用中,一组数据并不是都由相同性质的数据构成,而常常是由一些不同类型的数据构成。
譬如要统计某班学生成绩,需要知道学生的姓名、成绩,姓名与成绩是两种不同类型的数据。
又如通讯录中有姓名、地址、邮政编码、电话等不同类型的数据。
若用数组来解决问题,则会将这些互相联系的数据割裂开来,不便于引用。
为此,C语言允许用户根据需要自行构造出一种被称为“结构体”的数据类型。
结构体是一种较为复杂而又非常灵活的构造型的数据类型。
一个结构体类型的数据可以由若干个称为成员(或域)的成分组成。
不同的结构体类型其成员不同。
对于一个具体的结构体而言,其成员的数量是固定的,这一点与数组相同,但该结构体中各成员的数据类型可以不同,这是结构体与数组的重要区别。
8.2 结构体类型定义结构体类型定义的一般形式为:struct 结构体名{ 类型名1 结构成员名1; 类型名2 结构成员名2; ??类型名n 结构成员名n; }; 其中:⑴ struct是关键字,是定义结构体类型的标志。
不能省略,表示这是一个“结构体”类型。
⑵ 结构体名是用户定义的结构体类型名,其命名规则同变量名。
⑶ 类型名1~n说明了结构成员的类型。
⑷ 结构成员名1~n为用户定义的一个或多个结构成员的名称,其命名规则同变量名。
多个同类型的成员彼此用逗号分隔。
通常将上面定义形式中{}中的部分称之为成员表列,也叫域表。
注意:结构体类型的声明是以分号(;)结尾的。
例如: struct student {int num;char name[20]; char sex; int age;float score[4]; };211表明定义了一个struct student结构体类型,成员有num,name,score等。
C语⾔结构体,枚举,联合体详解⽬录1.什么是结构体、枚举、联合体2.定义结构体2.1 包含结构体成员变量、variable2.2 tag、结构体成员变量2.3 ⽤结构体声名变量2.4 ⽤typedef 创建新类型2.5 两个结构体相互包含2.6 结构体变量初始化2.7 结构体指针3.枚举3.1 定义⽅式3.2 为什么⽤枚举3.3 枚举变量的定义3.4 实例3.5 枚举实际⽤途4.联合体4.1 与结构体区别4.2 定义总结1.什么是结构体、枚举、联合体结构体(struct)是由⼀系列具有相同类型或不同类型的数据项构成的数据集合,这些数据项称为结构体的成员。
如下⾯的student结构体包含三个成员,分别是name、num、age。
枚举(enum)是C语⾔的⼀种特殊类型。
当我们在编程中遇到定义⼀些固定长度或范围的数值时,可以考虑使⽤枚举类型。
使⽤枚举可以让我们的程序可读性更强、看起来更加直观。
举个例⼦,如果我们在编程中需要使⽤数字06分别表⽰星期⽇星期六,程序的可读性就不⾼,我们需要翻⼿册或者看程序注释才能知道每个数字具体代表什么意思。
如果我们使⽤枚举呢,基本上不需要看注释或⼿册就可知晓其⼤意。
联合体是⼀种结构。
它的所有成员相对于基地址的偏移量都是0。
此结构空间要⼤到⾜够容纳最宽的成员。
其对其⽅式适合其中所有成员。
123456// 创建结构体struct student{char *name; // 学⽣名字int num; // 学⽣学号intage; // 学⽣年龄};2.定义结构体12struct tag{ 成员变量...}variable;通常,tag 、结构体成员变量、variable 这3个部分⾄少要出现2个2.1 包含结构体成员变量、variable1234struct {char name[100];int age;}s1;//s1相当于对这个结构体声明了⼀个变量,可以在程序中直接调⽤s1相当于声明的全局变量。