第5章自定义数据类型分解.ppt
文本预览下载声明
第5章 自定义数据类型 5.1.1 结构体的概念 struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; : 数据类型 成员名n; }; struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; : 数据类型 成员名n; }; struct student { char id[7]; //长度为7的字符数组id,表示学号 char name[10]; //长度为10的字符数组name,表示学号 float score; //单精度实数类型score,表示入学分数 }; //注意分号不要省略 (1)结构体类型是用户自行构造的。 (2)它由若干不同的基本数据类型的数据构成。 (3)它属于C++语言的一种数据类型,与整型、实型相当。因此,定义它时不分配空间,只有用它定义变量时才分配空间。 5.2 结构体变量的定义 一、先定义结构体类型再定义变量名 struct student { char id[7]; char name[10]; float score; }; struct student st1; student st2; 二、在声明类型的同时定义变量 struct 结构体名 { 成员说明列表; } 变量名表列; 5.2 共用体 结构体类型解决了如何描述一个逻辑上相关,但数据类型不同的一组分量的集合。 在需要节省内存储空间时,c语言还提供了一种由若干个不同类型的数据项组成,但共享同一存储空间的构造类型。 枚举类型定义的一般形式: enum 枚举名 { 枚举常量取值表 }; 枚举符号常量的整型值: 枚举符号常量的整型值: 枚举类型应用说明: 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。 在直接输出某个枚举变量的值时,所显示的是枚举符的整型值而不是枚举类型的枚举符,若要输出枚举符则需要编程实现。 归纳起来,声明一个新的类型名的方法是: ① 先按定义变量的方法写出定义语句(如int i;)。 ② 将变量名换成新类型名(如将i换成COUNT)。 ③ 在最前面加typedef(如typedef int COUNT)。 ④ 然后可以用新类型名去定义变量。 5.2.1 共用体类型与变量的定义 union 共用体类型名 { 成员说明列表 }; 共用体类型定义的一般形式为: union data { int i; char ch; float f; }; 定义了一个union data共用体类型,共用体类型定义不分配内存空间,只是说明此类型数据的组成情况 共用体变量定义的三种形式为: 利用已定义的共用体类型名定义变量 共用体变量定义的一般形式: [union] 共用体类型名 变量名; union data { int i; char ch; float f; }; data a,b,c; 共用体变量定义的三种形式为: 在定义共用体类型的同时定义变量 union data { int i; char ch; float f; }a,b,c; 共用体变量定义的三种形式为: 定义共用体类型时,省略共用体类型名,同时定义共用体类型变量。 union { int i; char ch; float f; }a,b,c; 共用体变量所占的内存空间 在共用体变量中,在任一时刻只能保存一个数据成员,共用体类型数据的这一特点决定了其内存空间的大小为其数据成员中占内存空间最大的值。 union data { int i; char ch; float f; }a; a变量所占内存的大小为4个字节 (假设起始地址为2000) union data { int i; char ch; float f; }a,*px; px=a; 5.2.2 共用体变量的引用 共用体变量成员的引用方式与引用结构体变量中的成员相似, 对共用体变量,通过“.”运算符来引用成员, 对指向共用体变量的指针,通过“-”运算符来引用共用体变量的成员。 引用共用体变量的i、ch、f成员, 通过变量a可以表示为: a.i, a.c
显示全部