当前位置 博文首页 > 月下梭罗的博客:自定义数据类型---枚举和共用体(浅记)

    月下梭罗的博客:自定义数据类型---枚举和共用体(浅记)

    作者:[db:作者] 时间:2021-08-07 12:59

    枚举

    枚举顾名思义就是把可能的取值一一列举,比如在我们现实生活中:一周的星期一到星期日是有限的7天,可以一一列举。性别有:男,女,保密,也可以一一列举;十二个月份也可以一一列举。这时就可以使用枚举了。

    枚举类型的定义

    枚举的使用

    enum Sex{
        //枚举的可能取值---常量
        MALE;
        FEMALE;
        SECRET;
    };
    
    enum Color{
        RED;
        GREEN;
        BLUE;
    };
    
    
    
    int main(){
        enum Sex s=MalE;
        enum Color c=BLUE;
        
        return 0;
    }
    

    枚举的优点

    为什么使用枚举?
    我们可以使用 #define定义常量,为什么非要使用枚举?枚举的优点:

    • 1,增加了代码的可读性和可维护性
    • 2,和#define定义的标识符比较枚举有类型检查,更加严谨。
    • 3,防止了命名污染(封装)
    • 4,便于调试
    • 5,使用方便,一次可以定义多个常量

    联合(共用体)

    联合类型的定义

    联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。比如:

    union Un{
        char c;//1字节
        int i;//4字节
    };
    //5字节
    
    int main(){
        union Un u;
        printf("%d\n",sizeof(u));//结果为4字节
        printf("%p\n",&(u.c));
        printf("%p\n",&(u.i));
        printf("%p\n",&u);
        return 0;
    }
    //由程序的运行结果可知,他们公用一块内存空间
    

    联合体的特点

    联合的成员是共用同一块内存空间,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员。)

    在这里插入图片描述

    cs