文档介绍:第七章结构体与共用体
高级语言程序设计
莆田学院现代教育技术中心
2004年3月制作
莆田学院现代教育技术中心 2004年3月
本章主要内容
本章介绍:如何自己构造数据类型(构造型数据)
结构体
内存分配函数
共用体
枚举类型
类型定义
莆田学院现代教育技术中心 2004年3月
C(C++)数据类型
莆田学院现代教育技术中心 2004年3月
一、结构体
数组是构造类数据,其数组元素必须是同一数据类型的。
结构体也是构造类数据,但其成员可以是任何类型的。
构造类型使用户可以象处理单个变量一样来处理复杂的数据结构。
诸如学生花名册、通讯录之类的数据,最适合用结构体来处理。因为这类数据具有如下特点:
每个人信息都是一个复合的构造数据,如由姓名、学号、性别、年龄、家庭住址、联系电话等“成员”组成。
不同的人,数据的值不同,但都有共同的成员组成。
莆田学院现代教育技术中心 2004年3月
使用结构体的一般步骤
根据问题的要求定义一个结构体类型
用自己定义的结构体类型定义结构体变量
在程序中使用结构体变量处理问题
比较普通变量的情况:
用系统给定的数据类型定义变量
在程序中使用变量处理问题
莆田学院现代教育技术中心 2004年3月
如何定义结构体类型?
struct 结构体名
{
……
类型标识符成员名;
……
} ;
关键字用户指定
/*struct 结构体名合称“结构类型标识符”*/
/*成员表列*/
/*此处分号不能省略*/
莆田学院现代教育技术中心 2004年3月
一个示例
【例一】
main()
{
struct student
{
int number;
char name[6];
char sex;
int age;
char address[20];
} ;
……
}
本质上,它定义了一个名为”student”的“结构体类型”(表头)。
number
Name[6]
sex
age
Address[20]
…
莆田学院现代教育技术中心 2004年3月
小结:什么是“结构体类型”?
用户自己定义的构造型数据类型
由若干数据项(成员)组成
同一结构体中的成员可以具有不同的数据类型
注意成员定义与普通变量定义的区别:
成员定义时——不为其分配内存
变量定义时——为其分配内存
莆田学院现代教育技术中心 2004年3月
结构体类型的特点:
组成结构体的成员本身必须是一种已有定义的数据:
基本类型成员(整型/字符型/实型)
指针类型成员
数组类成员
其他构造类成员(包括已定义的另一种结构体)P262
注意:成员≠变量,故成员名可与变量名同名 P263
结构体类型可以有千千万万种,表示由若干不同数据项组成的复合类型。
定义结构体类型时,系统不会为该结构体分配内存(只是定义类型,而非变量声明)
莆田学院现代教育技术中心 2004年3月
2、结构体类型变量的定义
定义了以上结构体类型后,struct student 相当于标准数据类型关键字char, int ,float…我们可以用它来定义“结构体变量”。
①在结构体类型定义后,用 struct 结构体名复合词定义
struct 结构体名
{ …};
struct 结构体名变量名1,变量名2,…变量名n;
如:struct student a,b[30],*p;
a 为struct student类型的变量
b 为struct student类型的数组(每个元素都是一个结构
体变量,都有众成员)
p 为指向struct student类型的指针变量
莆田学院现代教育技术中心 2004年3月