C++课件第七章结构体、共同体和枚举.pptx
c++课件第七章结构体、共同体和枚举
目录
contents
结构体(Structures)
共同体(Unions)
枚举(Enumerations)
结构体、共同体和枚举的综合应用
结构体(Structures)
01
使用`struct`关键字定义一个结构体,可以包含多个不同类型的数据成员。
定义结构体
创建结构体变量
结构体嵌套
通过使用`struct`关键字后跟结构体名称来创建结构体变量。
可以在一个结构体内部定义另一个结构体,实现复杂的数据结构。
03
02
01
在定义结构体变量时,可以使用花括号`{}`来初始化其成员。
成员初始化
如果没有提供初始化值,结构体变量将自动使用默认值进行初始化。
默认初始化
可以使用一个已初始化的结构体变量来初始化另一个同类型的结构体变量。
拷贝初始化
示例
```cpp
structPoint{
intx;
inty;
};
Pointp1={1,2};//使用花括号初始化成员
Pointp2=p1;//使用拷贝初始化
```
01
02
03
04
共同体(Unions)
02
共同体是一种特殊的数据类型,可以存储不同类型的数据,但在任何时候只能存储其中的一种数据类型。
定义
使用关键字`union`定义共同体,例如:`unionMyUnion{inti;floatf;charc;};`
创建
01
02
由于共同体的成员变量共享内存空间,因此共同体的长度是所有成员中最大的那个成员的大小。
共同体的成员变量共享同一块内存空间,因此一个成员变量的存储空间会被另一个成员变量覆盖。
可以同时存储多种类型的数据,每个成员都有自己的内存空间,互不干扰。
只能存储一种数据类型,所有成员共享同一块内存空间,一个成员的存储空间会被另一个成员覆盖。
共同体
结构体
枚举(Enumerations)
03
枚举成员是整数常量,它们在定义时被赋予一个整数值。
枚举成员的值可以通过在定义时指定其整数值来指定,也可以省略不指定,此时默认从0开始,每次递增1。
枚举成员的名称必须唯一,并且不能使用C保留字作为枚举成员的名称。
枚举成员可以在程序中使用,可以作为常量值使用,也可以作为变量名使用。
枚举可以用于表示一组相关的常量值,例如一周的天数、月份等。
枚举可以用于简化代码和提高可读性,例如使用枚举代替一系列的常量值。
枚举可以用于表示状态或选项,例如文件访问模式、鼠标按钮状态等。
枚举可以用于实现安全的数据类型转换,例如将枚举类型转换为整数类型或字符串类型。
结构体、共同体和枚举的综合应用
04
03
结构体与共同体的初始化方式
结构体可以使用默认构造函数进行初始化,而共同体则必须使用复制构造函数。
01
结构体与共同体在内存管理上的差异
结构体通过堆栈进行内存分配,而共同体则共享同一块内存区域。
02
结构体与共同体的数据类型
结构体可以包含任意类型的数据,而共同体只能包含相同类型的结构体。
1
2
3
可以将枚举类型作为结构体的成员,用于表示不同的状态或选项。
枚举作为结构体的成员
在共同体中,枚举可以用于表示共享内存中的不同区域或状态。
枚举在共同体中的作用
使用枚举可以增加代码的可读性和可维护性,同时减少出错的可能性。
枚举在结构体和共同体中的优势
案例一:学生信息管理系统
案例二:游戏开发中的角色系统
在游戏开发中,角色系统需要定义角色的属性、技能和状态。可以使用结构体来定义角色属性,共同体来共享相同类型的角色技能,使用枚举来表示角色的不同状态。
学生信息管理系统需要存储学生的基本信息,如姓名、学号、成绩等。可以使用结构体来定义学生信息,使用共同体来共享相同类型的学生信息,使用枚举来表示不同的成绩等级。
THANKS
感谢观看