《第8章 结构体和共用体课件》由会员分享,可在线阅读,更多相关《第8章 结构体和共用体课件(33页珍藏版)》请在金锄头文库上搜索。
1、第八章 结构体和共用体,知识点,结构体类型声明和结构体变量定义 共用体 枚举类型,数组:具有相同类型的数据组成的集合体 结构体:不同数据类型的数据组成的集合体。 组成结构体类型的每个数据项称为该结构体的成员项,简称成员。,结构体的声明格式,Struct 结构体类型名 数据类型 成员名1; 数据类型 成员名2; . . . 数据类型 成员名n; ;,声明举例,Struct student Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ ;,结构体变量的定义,先定义结构体类型,再定义结构体变量 Struct 结构体名
2、结构体变量名表; Struct student s1,s2;,在定义结构体的同时定义结构体变量 Struct 结构体类型名 结构体成员表; 结构体变量表; Struct student Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,直接定义结构体类型变量 Struct 结构体成员表; 结构体变量名表; Struct Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,结构体变量的引用,引用结构体变量中的一个成员
3、 结构体变量.成员名 结构体指针变量-成员名 Struct student s,*ps; S.age=18; Ps=,结构体变量的整体引用 可以将结构体变量作为一个整体赋值给另一个相同类型的结构体变量 Struct student s1,s2; . . . S1=s2; 执行该赋值语句时,将s2变量中各成员项依次赋给s1中的各成员。这种赋值的前提是两个结构体变量必须具有完全相同的数据类型。,结构体变量的初始化,Struct 结构体类型 变量=初始数据; Struct student s=“李明”,1234,M,18,Struct student Char name12;/*姓名*/ Int n
4、o;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ ;,结构体指针变量,Struct 结构体类型 *结构体指针; Struct student s,*ps; ps=,共用体类型的定义,Struct 结构体类型名 数据类型 成员名1; 数据类型 成员名2; . . . 数据类型 成员名n; ;,union 共用体类型名 数据类型 成员名1; 数据类型 成员名2; . . . 数据类型 成员名n; ;,声明举例,Union untype Int i; Float f; Char c; ;,共用体变量的定义,先定义结构体类型,再定义结构体变量 Struct 结构体名 结构
5、体变量名表; Struct student s1,s2;,先定义共用体类型,再定义共用体变量 union共用体名共用体变量名表; union student s1,s2;,在定义结构体的同时定义结构体变量 Struct 结构体类型名 结构体成员表; 结构体变量表; Struct student Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,在定义共用体的同时定义结构体变量 Union 共用体类型名 共用体成员表; 共用体变量表; union student Char name12;/*姓名*/ In
6、t no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,直接定义结构体类型变量 Struct 结构体成员表; 结构体变量名表; Struct Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,直接定义共用体类型变量 union 结构体成员表; 结构体变量名表; union Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ s1,s2;,共用体变量的引用,引用结构体变量中的一个成员 结
7、构体变量.成员名 结构体指针变量-成员名 Struct student s,*ps; S.age=18; Ps=,引用共用体变量中的一个成员 共用体变量.成员名 共用体指针变量-成员名 union student s,*ps; S.age=18; Ps=,结构体变量的整体引用 可以将结构体变量作为一个整体赋值给另一个相同类型的结构体变量 Struct student s1,s2; . . . S1=s2; 执行该赋值语句时,将s2变量中各成员项依次赋给s1中的各成员。这种赋值的前提是两个结构体变量必须具有完全相同的数据类型。,共用体变量的整体引用 可以将结构体变量作为一个整体赋值给另一个相同类
8、型的结构体变量 union student s1,s2; . . . S1=s2; 执行该赋值语句时,将s2变量中各成员项依次赋给s1中的各成员。这种赋值的前提是两个结构体变量必须具有完全相同的数据类型。,共用体变量初始化,Struct 结构体类型 变量=初始数据; Struct student s=“李明”,1234,M,18,Struct student Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ ;,union 结构体类型 变量=第一个成员类型的数据; union student s=“李明,union
9、student Char name12;/*姓名*/ Int no;/*学号*/ Char sex;/*性别*/ Int age;/*年龄*/ ;,枚举类型,枚举类型引出的是一个具有一定数量的有序的名字表,而且表中列出了这种类型可能的全部取值。,枚举类型的声明和变量定义,类型声明和变量定义分开进行 Enum 枚举标识名枚举值1,枚举值2; Enum 枚举标识名 变量名表; 例如: Enum flag true,false Enum flag answer,yes; 枚举标识符和枚举值必须是用户定义标识符,直接定义枚举类型变量 Enum枚举值1,枚举值2,变量名表 Enum flag true,
10、false answer,yes;,在C语言中,枚举值(枚举元素)被处理成一个整形常量,此常量的值取决于声明各枚举值排列的先后次序,第一个枚举值的序号为0,以后顺序加1. 枚举值本身为常量,不允许对齐进行赋值操作,但可以在声明时认为规定枚举值的序号,没有指定具体值的枚举元素,其值为前一元素加1.人为给出的枚举值不能重复。,Enum operater add,sub,mul,div; Enum operater add=10,sub=5,mul,div;,枚举变量的赋值,只能给枚举变量赋枚举值,赋值运算符的两边必须属于同一个枚举类型 Op1=add;op2=div; 不能给枚举变量赋整型值 Op2=1(错),枚举变量的输出,枚举变量只能通过赋值语句得到值,不能通过scanf()语句直接读入数据,也不能通过输出语句直接以标识符形式输出枚举元素。 可以通过switch语句将枚举值转换为相应的字符串形式输出,小结,结构体类型 结构体类型和结构体变量 结构体变量成员的引用 共用体类型 枚举类型,作业,P188 1 4 5 P190 2 3 4,