📜  C++中的结构,联合和枚举(1)

📅  最后修改于: 2023-12-03 15:29:54.624000             🧑  作者: Mango

C++中的结构、联合和枚举

C++是一种面向对象的编程语言,结构、联合和枚举都是C++中非常重要的数据类型。

结构体(Struct)

结构体是一种用户自定义的数据类型,它可以包含不同类型的变量。结构体的定义使用关键字struct

struct Student {
    char name[20];
    int age;
    float score;
};

上面的代码定义了一个名为Student的结构体,其中包含nameagescore三个成员变量。结构体变量的声明和定义方法与普通变量相似,只需要在结构体名称后加上变量名即可:

Student stu1;
stu1.age = 18;

访问结构体成员变量需要使用stu1.age这样的语法,点号表示成员访问符。

结构体可以作为函数的参数和返回值,利用结构体可以方便地传递多个数据。

联合体(Union)

联合体也是一种用户自定义的数据类型,它和结构体有些相似,但是它只能使用其中的一个成员变量。联合体的定义使用关键字union

union Data {
    int i;
    float f;
};

上面的代码定义了一个名为Data的联合体,包含了if两个成员变量。联合体变量的声明和定义方法与普通变量相同:

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

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++中非常有用的自定义数据类型,它们可以用来存储各种不同类型的数据,并方便地进行访问和操作。在实际编程中,需要根据具体情况选择不同的数据类型。