文档详情

C程序设计简明教程(第二版) 王晓东及源代码 课件 第9章 结构体与共用体新.PPT

发布:2015-12-16约7.9千字共19页下载文档
文本预览下载声明
第9章 结构体与共用体 9.1 结构体概述 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 结构体类型定义 9.2定义结构体变量的方法 先定义结构体类型,再定义结构体变量 一般形式: 定义结构体类型的同时定义结构体变量 一般形式: 9.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员 9.4 结构体变量的初始化 形式一: 9.5 结构体数组 9.5.1结构体数组的定义 三种形式: 9.5.2结构体数组初始化 共用体 有时需要使几种不同类型的变量存放到同一段内存单元中。 union 共用体名 /*定义共用体类型*/ {成员表列}; 例: union data {int i; char ch; }; 定义类型之后,即可定义变量。 union data a; 引用: a.i,a.ch 共用体数据特点 (1)每一时刻只有一个成员起作用,起作用的是最近存放的成员。 (2)共用体变量与成员地址相同。 (3)不能对共用体变量赋值、初始化,也不能作函参、函数返回值,但可以使用指针来完成。 (4)共用体、结构体类型可相互嵌套。 与结构体区别 结构体变量各成员同时存在,顺序存放,其长度为各成员长度之和。 共用体变量各成员同一时刻只有一个成员存在,其长度取决于最长成员的长度。 枚举类型 如果一个变量只取有限个数的值,则可定义为枚举类型。变量的值只限于列举出来的值的范围内。 例:enum color{red,yellow,blue};/*enum color类型*/ enum color i;/*i为枚举型变量,取值是三者之一*/ typedef 用typedef声明别名来代替已有类型名。 例:typedef int INT;/*用INT代表int型*/ int i,j;等价于INT i,j; (1)习惯上把用typedef声明的类型名用大写字母表示,以便与已有类型区别。 (2)typedef只是对已有类型声明一个类型名,而没有创造新类型。 (3)与#define区别在于是在编译时处理。 (4)使用typedef利于程序通用与移植。 struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 成员类型可以是 基本型或构造型 struct是关键字, 不能省略 合法标识符 可省:无名结构体 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; name num sex age score addr 2字节 2字节 20字节 1字节 4字节 30字节 … ….. 结构体类型定义描述结构 的组织形式,不分配内存 结构体类型定义的作用域 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu1,stu2; struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 变量名表列; 例 #define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; float score; char
显示全部
相似文档