首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言——自定义类型之枚举

前言 本文介绍自定义类型中的枚举 一、枚举 枚举,通俗来讲就是一一列举 要注意枚举的枚举常量是有限个数 例如,三原色:红黄蓝;性别:男、女、保密;…… 二、定义与声明 #define _CRT_SECURE_NO_WARNINGS..., 一般默认第一个枚举常量的值是0,后面的每一个枚举常量的值都是给前一个的值加一; 如果给第一个枚举常量进行赋值,则后面的枚举常量也会随之变化,规则也是加一。...三、枚举的优点 1.增加了代码的可读性和可维护性 例如:之前编写的小游戏主菜单就可以用枚举来将switch选择中的0、1、2进行替换,更方便阅读。...,因此不能对宏定义进行调试,而枚举可以被调试】 ②枚举类型由类型检查更加严谨(C语言中体现不多,但是C++会体现); 【只能拿枚举常量给枚举变量赋值才不会出现类型差异】 ③使用更方便,一次可以定义多个变量...---- 总结 本文主要介绍了自定义类型中的结构体类型的相关知识,希望这篇文章对你理解结构体有所帮助。

35620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言:自定义类型——联合和枚举

    一、联合体 1.1 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以是不同的类型。 声明方式如下图: 那联合体和结构体究竟有什么区别呢??...2、 和#define定义的标识符⽐较枚举有类型检查,更加严谨。...#define定义的标识符是不过是一个符号,而枚举是一种类型,有类型检查写代码会更加严谨 3、 便于调试,预处理阶段会删除 #define 定义的符号 枚举类型在调试的时候会显示出成员名,但是#define...、枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 枚举有作用域的概念,在一个函数内部使用,出了函数就不能用了,但是#define定义的标识符没有作用域概念,他是一个全局都可以使用的常量。...2.3 枚举类型的使用 使用方法:使⽤枚举常量给枚举变量赋值 那是否可以拿整数给枚举变量赋值呢? 在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐ 较严格。

    27110

    【C语言】自定义类型:联合和枚举

    前言 前面我们学习了一种自定义类型,结构体,现在我们学习另外两种自定义类型,联合 和 枚举。 正文开始—— 一、联合体 1....c; int i; }; int main() { union Un un={0}; //联合变量的定义 un.i=0x11223344;...图书:书名、作者、页数 杯子:设计 衬衫:设计、可选颜色、可选尺寸 以结构体的的方式写 struct gift_list { //公共属性 int stock_number;//库存量...枚举类型的优点 我们可以使用 #define 定义常量,为什么要使用枚举类型?...增加代码的可读性和可维护性; 和 #define 定义的标识符比较枚举有类型检查,更加严谨; 便于调试,预处理阶段会删除 #define 定义的符号; 使用方便,一次可以定义多个常量; 枚举常量遵循作用域规则

    7210

    C语言----自定义类型:联合和枚举

    第一个字节是c,所有的4个字节都是i 所以我们发现i和c公用这4个字节的空间 所以联合体也叫共用体 我们可以发现,当我们用i的时候我们就不能用c 用c的时候就不能用i 因为改i的时候,c也改了 所以联合体成员在使用的时候...就是将可能的值一一列举出来 我们可以声明枚举类型 枚举的关键字是enum //struct A //{ // int _a : 2; // int _b : 5; // int _c...为什么使⽤枚举? 我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举? 枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符⽐较枚举有类型检查,更加严谨。...便于调试,预处理阶段会删除 #define 定义的符号 使⽤⽅便,⼀次可以定义多个常量 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ enum Sex//姓名 {...0; } define定义的话是全局的定义的 枚举类型的使用 enum Color//颜⾊ { RED=1, GREEN=2, BLUE=4 }; enum Color clr

    10310

    C语言定义数组时使用枚举作为数组的下标

    ,如果这个数组里保存的数据比较复杂,那么这种硬编码的下标方式非常的危险。...如下“` static char* language_type_data[] = { "Chinese", "German", "American" }; 这里定义了一个字符指针型数组,用来保存语言类型...,如下顶一个了一个枚举类型,用来作为访问数组的脚标。...这样写可读性很高,而且后期可以继续添加数组的成员,枚举的成员,且代码可以用循环判断来写,这样以后增加新成员只需要在枚举和数组上增加变量既可。但这段代码也有隐藏的问题。...为了避免这种隐患可以在定义数组时候使用枚举作为数组的下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

    3.5K30

    C语言——N自定义类型:联合和枚举

    #include //联合类型的声明 union Un { char c; int i; }; int main() { //联合变量的定义 union Un un = {...main() { //联合变量的定义 union Un un = { 0 }; // 下⾯输出的结果是⼀样的吗?...//联合变量的定义 union Un un = { 0 }; un.i = 0x11223344; un.c = 0x55; printf("%x\n", un.i); return 0;...我们可以使用 #define 定义常量,为什么非要使用枚举? 枚举的优点: 1. 增加代码的可读性和可维护性; 2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨; 3....便于调试,预处理阶段会删除 #define 定义的符号; 4. 使⽤⽅便,⼀次可以定义多个常量; 5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤。

    12210

    C语言-----自定义类型-----结构体&枚举&联合

    结构体和数组一样,都是一群数据的集合,不同的是数组当中的数据是相同的类型,但是结构体中的数据类型可以不相同,结构体里的成员叫做成员变量 结构体类型是C语言里面的一种自定义类型,我们前面已经了解到过int...,char,float,double等数据类型,结构体也是一种数据类型,而且是使用者自己定义的数据类型,用法如下: 1.结构体类型的声明 struct stu { char name[20];...s *p) { printf("%d\n", p->num); } int main() { print1(t); print2(&t); return 0; } 这里给出了传值,传地址两种方式...; Node* next; }Node; //这个是对匿名结构体的重新命名,这种写法是错误的因为Node没有定义就是用了Node* 5.结构体的大小--内存对齐现象 (1)结构体的第一个成员对齐到结构体变量起始偏移量是...,所以应该定义变量,对变 量输入一个值,然后将这个变量的值赋值给结构体的成员; 8.枚举 枚举就是把可能的值一一列举,比如一周有7天 枚举类型的使用,当然,我们在使用的时候可以给枚举常量赋值; 9.联合体

    7710

    C语言 | 枚举概述

    C语言枚举简述 在C语言中,如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。...一般形式 enum[枚举名]{枚举元素列表} 其中枚举名应遵循标识符的命名规则。 C语言编译对枚举类型的枚举元素按常量处理,故称枚举常量。...不要因为他们是标识符而把他们看作变量,不能对他们赋值,但枚举元素可以用来判断比较。 每一个枚举元素都代表一个整数,C语言编译按定义时的顺序默认它们的值为0,1,2,3,4,5……。...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线    C语言开发工具 VC6.0、Devc++、VS2019使用教程...100道C语言源码案例请去公众号:C语言入门到精通

    83140

    C语言 | 枚举概述

    在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...C语言枚举简述 在C语言中,如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。...一般形式 enum[枚举名]{枚举元素列表} 其中枚举名应遵循标识符的命名规则。 C语言编译对枚举类型的枚举元素按常量处理,故称枚举常量。...不要因为他们是标识符而把他们看作变量,不能对他们赋值,但枚举元素可以用来判断比较。 每一个枚举元素都代表一个整数,C语言编译按定义时的顺序默认它们的值为0,1,2,3,4,5……。...C语言枚举输出对应的星期 #include int main() { //PS:外国人习惯从0开始 enum Week{ Monday=0, Tuesday=1, Wednesday

    60710

    【C语言笔记】枚举

    其可以与typedef来进行类比进行理解(可查看【C语言笔记】define与typedef的区别?)。除此之外,其还可以与枚举enum进行类比。 二、什么是枚举 从字面理解,就是一一列举的意思。...DAY是枚举名,可有可无,这个名字是自己定义的;MON=1, TUE, WED, THU, FRI, SAT, SUN是枚举成员。...枚举成员的值是根据前一个成员的值递增1,即上面枚举定义等价于: enum DAY { MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7 }; 若上述定义中第一个成员...若其他成员赋了初值,也是遵循“枚举成员的值是根据前一个成员的值递增1”这一规则,如: enum DAY { A,B,C=100,D,F=200,G }; 此处 A=0 B=1 C=100 D=101...虽然更简洁了,但是因为没有了名字,后面就不能用该枚举定义新的变量。

    93951

    【熟视C语言】自定义类型之枚举详解

    枚举 枚举,也就是列举。现实生活中有很多这种可以列举出来的事物,比如星期一星期二这样的有限的天数,性别的种类,月份等等。...枚举类型的定义 以下几个为枚举类型的定义演示: enum day//星期 { Mon, Tues, Wed, Thur, Fri, Sat, Sun }; enum gender//性别...{ Example1,//0 Example2 = 4,//4后面的值依次递增 Example3,//5 Example4,//6 Example5,//7 }; 枚举的优点 对于以上定义,...枚举的优点: 增加代码可读性和可维护性。 和#define定义的标识符相比,枚举有类型检查,更严谨。 防止命名污染(封装)。 便于调试。 使用方便,一次可以定义多个常量。...return 0; } 结语 自定义类型第二部分到这里就结束了,非常感谢各位读者能读完这篇文章,如果你觉得做的还不错的话,可以点赞收藏分享,让更多的朋友知道。

    12910

    【C语言】自定义类型之联合和枚举

    前言 在之前的博客中介绍了自定义类型中的结构体,有想了解的可以点这个链接:link 今天来分享另外两种类型:联合和枚举。 2....我们可以使用 #define 定义常量,为什么非要使用枚举?...枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查,更加严谨。...便于调试,预处理阶段会删除 #define 定义的符号 使用方便,一次可以定义多个常量 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用 举个例子:实现一个简单计算器 我们就能将加减乘除设置成枚举类型...在C语言中是可以的,但是C++是不行的,C++的类型检查比较严格。 有错误请指出,大家一起进步!

    13010

    C语言(枚举类型)

    C语言中的枚举类型常年跑龙套当配角,不受待见,这当然是有其个人原因的。今天来个小知识,看看枚举为什么那么衰,也顺便看看怎么用。 我们先来回忆一下为什么需要枚举,枚举究竟是个什么东东?...indigo, purple}; enum spectrum color; 注意到上面两行代码,第一行是所谓的枚举类型定义及其常量列表,实际上就定义了枚举变量的有效范围,从red(即1)开始,到purple...第二,使用单词而不是数字,提高程序的可读性。 这么看来,枚举是一种挺好玩也挺有用的东西,但是在C语言中怎么就不受待见了呢?...原因是C语言只提供了一种阉割版的枚举,以上两大目的在C中实质上都是没有实现的,也就是说,在C语言中,实际情况是这样的: color = blue; // 正确,此时color就是5 color = 5;...你看明白了吧,C语言中的所谓枚举其实就是个坑爹货,其实就是彻头彻尾的整型数据而已。

    1.8K30

    C语言——枚举类型

    一,什么是枚举类型 简单来说,枚举类型就是可以让我们给整数值分配有意义的名字,从而使得代码更易读、易维护 二,枚举类型的定义和变量的声明 1,如何定义和声明 枚举类型的定义和变量的声明方式也与结构体和联合体相似...(一)枚举类型的定义 enum 枚举名 { 成员项表列 }; (二)枚举变量的声明 enum 枚举名 变量名 举例:我们定义一个代表颜色的枚举类型,然后创建一个枚举变量a enum color...如果我们在创建枚举变量时,为未给成员进行初始化赋值,则C语言会自动赋值 遵循:默认从0开始,依次增1 如果只有前几个值,那么后面未被赋值的成员也会被自动赋值,遵循依次增1 例子一(不赋值)...3,命名注意事项 同一个程序中不能定义同名的枚举类型;不同的枚举类型中,也不能存在同名的枚举成员。...⭐C语言中的枚举变量通常只能被赋值为枚举类型中定义的成员。

    89111

    【C语言基础】:自定义类型(二) -->联合和枚举

    // 联合体的声明 union Un { char c1; int i; }; #include int main() { union Un u = { 0 }; // 联合变量的定义...: 增加代码的可读性和可维护性 和 #define 定义的标识符比较枚举有类型检查,更加严谨。...便于调试,预处理阶段会删除 #define 定义的符号 使用方便,一次可以定义多个常量 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用 【示例】:计算器 enum Option { EXIT...注意:C语言中可以利用整数给枚举变量赋值,但是C++不可以,这是因为C++的类型检查比较严格。...// enum Color color = RED; // TRUE enum Color color = 0; return 0; } enum Color color = 0; 这一句虽然在C语言中不会报错

    12910

    【C语言】自定义类型:联合体和枚举

    struct关键字,而联合体声明时使用union关键字,如下: union un { char c; int i; };    它创建变量的方式和结构体都是类似的,如下: union un { char...   如果还没有学习结构体,可以参考文章:【C语言】自定义类型:结构体 2.联合体的特点    联合的成员是共用同⼀块内存空间的,这样⼀个联合变量的大小,至少是最⼤成员的大小(因为联合体至少得有能力保存最大的那个成员...这是初始化完i时,结构体内存的存储:    可以看到,这里VS用小端字节序的方式将i存放到了内存中,如果不知道什么是小端字节序,可以参考该文章:【C语言】数据在内存中的存储(万字解析)   ...我们可以使⽤ #define 定义常量,为什么非要使用枚举来定义枚举常量?...定义的标识符比较枚举有类型检查,更加严谨 便于调试,预处理阶段会删除 #define 定义的符号,这个在后面的预处理详解我们会讲到 使⽤⽅便,⼀次可以定义多个常量 枚举常量是遵循作⽤域规则的,枚举声明在函数内

    8210

    C语言进阶—自定义类型:结构体,枚举,联合

    2.结构的自引用 正确自引用方式: struct Node { int data; struct Node* next; }; 特殊写法 typedef struct Node { int data...位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。 3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。...这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值 但是它的值是固定的不能更改的 2.枚举的优点 为什么使用枚举?...我们可以使用 #define 定义常量,为什么非要使用枚举? 枚举的优点: 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符比较枚举有类型检查,更加严谨。 3....使用方便,一次可以定义多个常量 3.枚举的使用 只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。

    9310

    C语言-枚举、共用体

    匿名方式定义,只能在定义共用体的时候就定义变量 union { int a; int b; char c; }a1,a2,a3; //定义3个变量 union app2 {...枚举 C语言的枚举可以给一串有序的数字集合定义名字,特别是数量较多的整数需要定义名字时,比#define更加方便。...特别是定义函数的返回值类型,特别方便,项目开发中,一般标准的函数返回值都有很多种情况,为了方便调用者判断错误类型,可以把这些错误值全部使用枚举定义,这样调用者就能清楚知道每个数值代表的含义。...枚举的定义语法: enum 枚举名 {枚举元素1,枚举元素2,……}; 默认成员都是从0开始,如果某一个成员被赋了值,则该成员以后的元素都以此为基础递增。...枚举的定义及用法示例: #include #include #define DEF_VAL 100 //枚举类型 /* 枚举内部的是常量标识符,这些常量标识符就相当于全局变量

    82620
    领券