人间日常

所行皆过往,所愿皆成真

正在加载今日诗词....

《c++之路》用户定义的类型--User-Defined Types

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是特殊数据类型,可以存储不同类型的数据,但一次只能存储一种。

关注我

湘ICP备2020021380号-1
© 2014 - 2024 SIWEN.PENG