第十四章结构体、共用体和用户定义类型结构体、到目前为止,我们已经介绍了C语言中的基本类型(整型、字符型、实型、双精度型和空值型)以及派生类型(指针和数组)。本章将介绍在C语言中可由用户构造的三种数据类型。它们是:1.用户定义类型(typedef):对已有的类型,另外说明一个新的类型标识符。2.结构体(struct):把具有相互关系的不同类型的数据组成一个有机的整体。3.共用体u
io
:又称联合体。使几种不同类型的变量共用一段存储空间。141用typedef说明一种新类型名C语言允许用tyhpedef说明一种新类型名,说明新类型名的语句一般形式为:typedef类型名标识符在此,“类型名”必须是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型。原有类型名依然有效。例如:typedefi
tINTEGER;该语句把一个用户命名的标识符INTEGER说明成了一个i
t类型的类型名。在此说明之后,可以用标识符INTEGER来定义整型变量。例如:INTEGERm
等价于i
tm
也就是说:INTEGER是i
t的一个别名。为了便于识别,一般习惯将新的类型名用大写字母表示。又如:typedefcharCHARPCHARPp等价于charp初学者可能会感到,上述说明形式似乎不够直观,不好理解。下面以此为例来解释说明一个新类型名的具体步骤:1.首先按通常定义变量的方法写出定义的主体:charp2.将变量名换成新类型名:charCHARP3.在最左面加上关键字typedef:typedefcharCHARP4.可以用新类型名定义变量了:CHARPP;142结构体类型结构体是一种较为复杂但却非常灵活的构造型数据类型。一个结构体类型可以由若干个称为成员(或域)的成分组成。不同的结构体类型可根据需要,由不同的成员组成。对于某个具体的结构体类型,
f成员的数量必须固定,这一点与数组相同;但该结构体中各个成员的类型可以不同,这是结构体与数组的重要区别。因此,当需要把一些相关信息组合在一起时,采用结构体这种类型就很方便。例如,我们可由以下三部分描述:年year、(mo
th)日月、(day)。常用的“日期”它们都可以选用整型数表示。可以把这三个成员组成一个整体,并给它取名为data,这就是一个最简单的结构体。再以学生档案为例,假设包括如下数据项:姓名(
ame):字符串性别(sex):字符型出生日期(birthday):date结构体四门课成绩(sc):一维实型数组可以将这四个成员组r