枚举类型与结构体的区别

您所在的位置:网站首页 结构类型有什么 枚举类型与结构体的区别

枚举类型与结构体的区别

2024-07-15 20:28| 来源: 网络整理| 查看: 265

一、枚举类型:

1.1、定义:

        是指将变量的值一 一列出来,变量的值只限于列举出来的值的范围内;

1.2、使用格式: 举例说明:

        enum DAY         {             MON=1, 

            TUE, 

            WED, 

            THU, 

             FRI, 

             SAT, 

             SUN          };

格式注意事项说明:

1.2.1、枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。

1.2.2、DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。

1.2.3、 未认为设定枚举成员值时,第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。

1.2.4、可以人为设定枚举成员的值,从而自定义某个范围内的整数。

1.2.5、 枚举型是预处理指令#define的替代。

1.2.6、类型定义以分号;结束。

1.3、枚举的优点

1.3.1、增加代码的可读性和可维护性

1.3.1、和#define定义的标识符比较枚举有类型检查,更加严谨

1.3.1、防止了命名污染(封装)

1.3.1、便于调试

1.3.1、使用方便,一次可以定义多个常量

那这样做的好处是什么呢? 举例说明: 看以下代码:

int chose; printf("%d",&chose); switch (chose) { case 1:                  Add();              //执行加法     break; case 2:     Sub();              //执行减法     break; case 3:                      Mul();              //执行乘法     break; case 4:     Div();              //执行除法     break; case 0:     return 0;           //退出 } 这是一个建议计算器的选择模块,如果使用 switch 语句,后面的 case后面的数字代表不同的算法。像以上代码,如果算法增加到即使或者更多,那么,数字和算法可能会匹配乱掉,但是,如果改为用枚举变量,那么代码的可读性以及思路清晰程度会大大提高。如下:

    enum shose {     EXIT,     ADD,     SUB,     MUL,     DIV }; int chose; printf("%d",&chose); switch (chose) { case ADD:                  Add();              //执行加法     break; case SUB:     Sub();              //执行减法     break; case MUL:                        Mul();              //执行乘法     break; case DIV:     Div();              //执行除法     break; case EXIT:     return 0;           //退出 } 这就很清楚的体现了枚举类型的用途;

二、结构体类型

2.1、定义:

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。

2.2、结构体的格式形式为:

struct 结构体名{     结构体所包含的变量或数组 };

结构体定义的三种方式:

第一种:只有结构体定义

struct stuff{         char job[20];         int age;         float height; };

第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义

//直接带变量名Huqinwei struct stuff{         char job[20];         int age;         float height; }Huqinwei; 也许初期看不习惯容易困惑,其实这就相当于:

struct stuff{         char job[20];         int age;         float height; }; struct stuff Huqinwei;

第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用

struct stuff yourname; 去定义第二个变量。

那么,附加变量初始化的结构体定义还可进一步简化出第三种:

把结构体名称去掉,用匿名结构体直接定义一个结构体对象(习惯用对象这词了),这样更简洁,不过也不能定义其他同结构体变量了——除非用typeof。

struct{         char job[20];         int age;         float height; }Huqinwei;

2.3 结构体总结:

结构体的内存对齐是拿空间来换取时间的做法。

那在设计结构体的时候,我们既要满足对齐,又要节省空间,如何做到:让占用空间小的成员尽量集中在一起

结构体可以是不同类型的集合;

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3