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

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

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

结构体(struct)

结构体是由多个不同数据类型的变量组成的数据类型,它可以将这些变量封装成一个整体来处理。结构体定义如下:

struct structure_name
{
    data_type element_name1;
    data_type element_name2;
    ...
    data_type element_nameN;
};

例如,定义一个学生结构体:

struct Student
{
    std::string name;
    int age;
    char gender;
};

就可以创建一个拥有姓名、年龄和性别属性的学生类型。在程序中,可以使用.来访问结构体的成员:

Student student1;
student1.name = "Tom";
student1.age = 18;
student1.gender = 'M';
联合体(union)

和结构体不同,联合体中的各个成员共用同一块内存空间,联合体的大小等于其最大成员的大小。联合体的定义如下:

union union_name
{
    data_type element_name1;
    data_type element_name2;
    ...
    data_type element_nameN;
};

例如,定义一个联合体:

union MyUnion
{
    int x;
    float y;
    char z;
};

x、y和z这三个成员共享同一个内存空间。

联合体的一种常见用法是用来存储不同类型的数据,例如:

union Data
{
    int i;
    float f;
    char str[20];
} data;

可以根据需要将不同类型的数据存储到data中,占用同一块内存空间。

枚举类型(enum)

枚举类型是一种用户定义的类型,它可以将一组常量定义为一个可枚举的列表。枚举类型的定义如下:

enum enum_name
{
    enumerator1,
    enumerator2 = value,
    ...
    enumeratorN
};

其中,enumerator1~enumeratorN是枚举常量的名称,value是对enumerator2的值进行初始化,如果前面一个枚举常量没有初始化,其值默认为上一个枚举常量的值加1。

例如,定义一个颜色的枚举类型:

enum Color
{
    RED,
    GREEN,
    BLUE
};

就可以使用RED、GREEN和BLUE来代表不同的颜色。

枚举类型还可以使用enum class关键字来定义:

enum class Color
{
    RED,
    GREEN,
    BLUE
};

这样定义的枚举类型成为了一个作用域枚举类型,枚举值只能通过枚举类型进行访问,避免了枚举常量名相同所产生的命名冲突问题。

以上就是C++中的结构体、联合体和枚举类型的介绍,它们都是C++中用于组织和管理数据的重要机制。