📅  最后修改于: 2023-12-03 15:29:54.624000             🧑  作者: Mango
C++是一种面向对象的编程语言,结构、联合和枚举都是C++中非常重要的数据类型。
结构体是一种用户自定义的数据类型,它可以包含不同类型的变量。结构体的定义使用关键字struct
:
struct Student {
char name[20];
int age;
float score;
};
上面的代码定义了一个名为Student
的结构体,其中包含name
、age
和score
三个成员变量。结构体变量的声明和定义方法与普通变量相似,只需要在结构体名称后加上变量名即可:
Student stu1;
stu1.age = 18;
访问结构体成员变量需要使用stu1.age
这样的语法,点号表示成员访问符。
结构体可以作为函数的参数和返回值,利用结构体可以方便地传递多个数据。
联合体也是一种用户自定义的数据类型,它和结构体有些相似,但是它只能使用其中的一个成员变量。联合体的定义使用关键字union
:
union Data {
int i;
float f;
};
上面的代码定义了一个名为Data
的联合体,包含了i
和f
两个成员变量。联合体变量的声明和定义方法与普通变量相同:
Data d;
d.i = 100;
访问联合体成员变量时也使用点号访问符,但是只能使用一个成员变量,另一个成员变量的值会被覆盖。
联合体常用于不同类型数据的转换,例如将char
数组转换为int
类型:
union {
char buf[4];
int num;
} data;
data.buf[0] = 'A';
data.buf[1] = 'B';
data.buf[2] = 'C';
data.buf[3] = 'D';
cout << "num: " << data.num << endl;
在此例中,使用联合体data
,将char
数组buf
的值转换为int
类型的num
。输出结果为:num: 1145258561
。
枚举类型也是一种用户自定义的数据类型,它用于定义一些具有固定数量的离散值,例如星期几、月份等。
枚举类型的定义使用关键字enum
:
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
上面的代码定义了一个名为Weekday
的枚举类型,包含了七个枚举值。枚举变量的定义和普通变量相同,也需要声明变量类型。可以通过下标访问枚举值,例如:
Weekday today = Tuesday;
cout << "Today is " << today << endl; // Today is 1
枚举值默认是从0开始递增的整数,可以使用指定值的方式改变枚举值的初始值,例如:
enum Color {
Red = 1,
Green,
Blue
};
上面的代码定义了一个名为Color
的枚举类型,起始值为1,后面的枚举值依次递增。
结构体、联合体和枚举类型都是C++中非常有用的自定义数据类型,它们可以用来存储各种不同类型的数据,并方便地进行访问和操作。在实际编程中,需要根据具体情况选择不同的数据类型。