C程序设计 第11章 结构体、联合体与枚举类型文档.pptVIP

  • 3
  • 0
  • 约1.14万字
  • 约 61页
  • 2018-02-27 发布于湖北
  • 举报

C程序设计 第11章 结构体、联合体与枚举类型文档.ppt

C程序设计 第11章 结构体、联合体与枚举类型文档

假设pu指向联合体变量,则下面3个语句的效果是一样的。 u.i=23; 等价于 (*pu).i=23; 等价于 pu-i=23 联合体的特征决定了它的应用远不如结构体应用那样广泛。但是实际应用中,常常会出现一些量相互排斥的情况,这时用联合体就非常方便。 * 11.6 枚举数据类型 11.6.1 枚举类型的定义 枚举类型通过枚举一系列有序的标识符来定义。枚举类型定义的一般格式为: enmu 枚举名{枚举分量名1,枚举分量名2,……,枚举分量名n}; 其中,enmu是定义枚举类型的关键字。枚举名遵循标识符命名规则,用于标识所定义的枚举类型。枚举分量也是一个合法的标识符,由用户根据需要自己确定,它们列出一个枚举变量可以具有的值,又称为枚举常量。枚举常量各自代表一个数值,因此它们之间有先后顺序,可以进行比较。 * 例如: enum week {sun ,mon,tue,wed,thu,fri,sut}; 定义了一个枚举类型enmu week,它由枚举常量sun 、mon、tue、wed、thu、fri和sut组成,即一个enmu week类型的枚举变量可以具有的值为sun 、mon、tue、wed、thu、fri和sut。 在C语言中,枚举类型中的枚举常量各自隐含一个int型值。在默认情况下,枚举常量的值从0开始,后一个总是比前一个大1。如在枚举类型week中,第一个枚举常量sun有值0,第二个枚举常量mon有值1,依次类推,最后一个枚举常量sat有值6,这是一种隐式定值方法。另外,在定义枚举类型时,还可以通过显式赋值的方法来确定枚举常量的值。 * 例如, enum week {sun=7,mon=1,tue,wed,thu,fri,sat}; 这里,sun的值是7,mon的值是1,它们是通过显式赋值的方式来确定其值的,tue没有被显式赋值,它的值是前一个枚举常量的值加1,即为2,同样wed值为3,……sat的值是6。 * 11.6.2 枚举变量的定义和引用 1.先定义枚举类型,再定义枚举变量。 2.定义枚举类型的同时定义枚举变量。 3.直接定义枚举变量。 * 例11.17 编写程序,输入今天是星期几,计算并输出明天是星期几。 程序如下: enum week {sun, mon, tur, wed, thu, fri, sat}; enum week tomorrow(day) enum day; { int n; n=((int)day+1)%7; return((enum week)n); } main() { enum week day1, day2; char *name[ ]={ sun, mon, tur, wed, thu, fri, sat}; int n; printf(\n请输入0-6内的整数:); scanf(%d,n); day1= (enum week)n; day2= tomorrow(day1); printf(“明天是: %s,name[(int)day2]); } * 程序运行结果为: ? 请输入0-6内的整数:3↙ 明天是: thu * 11.7 自定义类型 自定义类型的一般形式为 typedef 类型说明符 新类型名表; 例如: typedef float REAL; typedef REAL *POINT; POINT p1,p2; * 显然“职工信息”中的“出生日期”和“家庭住址”应该用结构体类型描述,首先定义结构体类型“日期”struct date和“住址”struct address如下。 struct date { int year; /*年 */ int month; /*月 */ int day; /*日 */ }; struct address { char city[50]; /*城市*/ char street[50]; /*街道*/ int streetnum; /*门牌号码*/ }; * ? 然后定义结构体类型“职工”struct employee如下。 ? struct employee { int num; char name[10]; char sex; struct date birthday; struct address addr; }; * 在结构体类型struct employee中,成员birthday是struct

文档评论(0)

1亿VIP精品文档

相关文档