c++除了内置类型外,还支持用户自定义类型,以便用户可以方便的编写高级应用程序,此处我们主要学习struct, union,enum,class
enum
枚举应用:在实际中,有些值无论数值或者字符型的,取值在一个固定范围内,设计者提前知道其取值,但是每个变量只能取其中之一的值,这时可以考虑使用枚举类型。例如:一周有七天;一周有12门课,访问数据类型指定为固定的几个类型。这些都可以使用枚举类型。
枚举定义: enum 枚举类型名{枚举元素1,枚举元素2,枚举元素3…};
枚举变量的声明:同结构体和联合体一样,枚举变量也可以用不同的方式说明,即先声明后定义或者直接在声明时定义。
enum weekend {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
struct
-有时用户需要将不同类型的数据结合到一起,这时我们不能使用数组,因为数组必须是同一类型的数据,这样就诞生了结构体类型,结构体使我们把有相互联系的不同类型的数据组合到一起,它相当于高级语言中的记录。定义一个结构体类型的两种形式:一种是声明和定义一起;另一种是声明和定义分开。
- struct 结构体类型名{类型1 成员1;类型2 成员2;…}结构体变量名;
- struct 结构体类型名{类型1 成员1;类型2 成员2;…}; struct 类型名 结构体变量名;(C++可以省略struct 关键字)
struct {
int num;
char name[10];
char sex;
char job;
};
union
有时我们需要使几种不同类型的变量存放在同一内存单元中。例如,把一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元。这时我们就可以使用共用体union。共用体类型的一般声明形式:
- 声明:union 共用体类型名{成员列表};
- 定义:共用体类型名 共用体变量名; 同样可以在声明共用体类型的同时定义变量
共用体的特点:
- 不能引用共用体变量,而只能引用共用体变量的成员;
- 使用共用体变量时,在每一瞬时只能存放期中一种,而不是同时存放几种,即每一瞬时只有一个成员起作用。
- 能够访问共用体中最后一次被赋值的成员,在对一个新成员赋值后原有的成员就失去了作用。
- 共用体变量的地址和它的成员的地址都是同一地址。
- 不能对共用体变量名赋值,不能企图用变量名来得到一个值;不能再定义共用体变量时对它初始化;不能用共用体变量名做函数参数。
union P{
int grade;
char position[10];
} category;
总结
struct,enum和union是C语言中的三种数据类型。
struct是一种复合数据类型,它可以用来组合不同类型的变量,并将它们存储在一起。例如:
struct student { int age; char name[20]; } s1;
enum是一种枚举数据类型,它可以用来定义一组常量。例如:
enum week {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
union是一种特殊的数据类型,它可以存储不同的数据类型,但一次只能存储一种数据类型。例如:
union data { int i; float f; char str[20]; } u;
总结:
- struct是复合数据类型,可以存储不同类型的变量在一起。
- enum是枚举数据类型,用于定义一组常量。
- union是特殊数据类型,可以存储不同类型的数据,但一次只能存储一种。