前言 这篇博客就把剩下的两个自定义类型联合体和枚举好好总结一下,让我们好好看看联合体和枚举到底是什么 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 1....联合体 1.1 联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。...联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。...枚举类型 枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量 2.1 枚举类型的声明 枚举顾名思义就是一 一列举。 把可能的取值一 一列举。...结束语 枚举和联合体总结完了,这两个和上一篇的结构体都可以用typedef关键字重命名,好了全部自定义类型总结完了 OK,感谢观看
联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。...对于联合体的各个成员都是从联合体的首个字节开始进行存储(像联合体这种包含多个数据的类型内部都是从低地址到高地址进行存储,数组,结构体这种包含多个数据的也是同理)。从而会共用同一块内存空间。..., SECRET }; enum Color//颜⾊ { RED, GREEN, BLUE }; 枚举跟前面的结构体和联合体完全不同。...枚举依然能像结构体和联合体一样在;前面创建变量(创建类型的同时创建变量) 这大概就是枚举的主要知识点,当然它还有更多的细节,对于这些细节我就不讲了(实在有点多),这里有篇好文我推荐下,大家可以去看下C...总结 所以目前我们就讲解完了联合体和枚举 。 下一篇将给大家讲解动态内存管理。 谢谢大家!!!
枚举 枚举的定义 枚举顾名思义就是一一列举。 把可能的取值一一列举。 一周的星期一到星期日是有限的7天,可以一一列举。 性别有:男、女、保密,也可以一一列举。...枚举的优点 我们可以使用#define 定义常量,为什么非要使用枚举? 枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查,更加严谨。...防止了命名污染(封装) 便于调试 使用方便,一次可以定义多个常量 联合体(共用体) 联合体的定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间 (所以联合体也叫共用体...(un)); 联合体的变量是共用同一块空间的 联合体的计算 联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。...以上就是自定义类型中的枚举和联合体的介绍以及用法解释,自定义类型的使用是十分灵活的,需要我们好好领悟,要是文章有哪些错误,希望各位在评论区可以指正,我们一起进步!
现在,小编将枚举和联合体笔记分享给大家。枚举和联合体与结构体一样,都是自定义类型,在学习完枚举和联合体后,C语言中自定义类型也就告一段落啦。...联合体 概述 联合体也是自定义类型,关键字为union,特点是所有成员共⽤同⼀块内存空间,因此,联合体也叫做共用体。...概述 枚举,顾名思义,列举 将有限个,一 一列举出来,这就是枚举类型 声明 enum Day//星期 { Mon, Tues, Wed, Thur, Fri, Sat, Sun }...便于调试,预处理阶段会删除 #define 定义的符号 使⽤⽅便,⼀次可以定义多个常量 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 使用 enum Color//颜色 { RED=...1, GREEN=2, BLUE=4 }; enum Color clr = GREEN;//只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。
,也叫枚举常量。...枚举的优点 我们可以使用#define 定义常量,为什么非要使用枚举? 枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查,更加严谨。...防止了命名污染(封装) 便于调试 使用方便,一次可以定义多个常量 联合体(共用体) 联合体的定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间 (所以联合体也叫共用体...(un)); 联合体的变量是共用同一块空间的 联合体的计算 联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。...以上就是自定义类型中的枚举、联合体的介绍以及用法解释,自定义类型的使用是十分灵活的,需要我们好好领悟,如果文章有哪些错误,希望各位在评论区可以指正,我们一起进步!
联合体 1.1 联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。...所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。...其实我们仔细分析就可以画出联合体变量un的内存布局图: 1.3 相同成员的结构体和联合体对比 我们再对比一下相同成员的结构体和联合体的内存布局情况。...枚举 2.1 枚举类型的声明 枚举顾名思义就是一一列举。 把可能的取值一一列举。...{}中的内容是枚举类型的可能取值,也叫枚举常量 。 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。
前言 : 书接上文, 下面我将继续详解C语言的剩下两个自定义类型: 联合体和枚举 个人主页 : 酷酷学!!! 正文开始 1....联合体 1.1 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。...所以联合体也叫:共⽤体。 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。...1.3 相同成员的结构体和联合体对比 //结构体 struct S { char c; int i; }; struct S s = {0}; //联合体 union Un { char c;...枚举类型 2.1 枚举类型的声明 枚举顾名思义就是⼀⼀列举。 把可能的取值⼀⼀列举。
联合体 联合体的类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。...所 以联合体也叫:共⽤体。 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。 联合体输出的结果为什么是4呢?...枚举类型声明 枚举顾名思义就是⼀⼀列举。...,是从0开始的 赋值的话可以打印赋值的数值 给其中一个赋值的话后面的都会递增1 枚举类型的优点 为什么使⽤枚举 我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举 枚举的优点: 1....枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 枚举类型的使用 //打印菜单 cd() { printf("***************************\n"); printf
联合体和枚举 前言 C语言中,联合体(union)是一种特殊的数据类型,允许存储不同类型的数据在同一块内存空间中。...联合体的大小取决于其中最大的成员的大小,共享同一块内存空间的成员可以存储不同类型的数据。 联合体的定义方式与结构体类似,使用关键字union,后跟联合体的名称。...联合体的成员可以是任意类型的变量,包括基本数据类型、数组、指针等。 使用联合体时,可以使用成员访问运算符".“或指针运算符”->"来访问联合体的成员。...一、 联合体 1.1 联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。...联合体的特点是所有成员共用同一块内存空间。 所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。
联合体: 一、联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。...所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。...联合体(union):不同于结构体,联合体不是存储所有成员,而是使用相同的内存空间来存储其所有成员。联合体的大小是其最大的成员的大小。在任何时候,联合体只保存其最大的成员的值。...: 一、枚举类型的声明和定义 枚举顾名思义就是一一列举。...clr = GREEN;//使用枚举常量给枚举变量赋值 注意:在给枚举变量赋值的时候,只能用枚举常量(也就是这里的RED、GREEN、BLUE),不能使用这些常量所对应的值(也就是1、2、4),
、枚举 1.枚举类型的声明 枚举顾名思义就是⼀⼀列举,可以把所有可能的取值⼀⼀列举出来,⽐如我们现实⽣活中: ⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举 性别有:男、⼥,也可以⼀⼀列举 三原⾊...,也是可以一一列举 所以枚举也就是一一列举的意思,而枚举类型的声明和结构体以及联合体的声明相似,但是关键字是enum,接下来我们就来把我们举出的枚举例子一一实现出来,如下: enum Day//星期...,是无法更改的,一般用来将这些值赋值给其它变量 2.枚举类型的优点 为什么使⽤枚举?...我们可以使⽤ #define 定义常量,为什么非要使用枚举来定义枚举常量?...,只能在函数内使用,而#define定义的常量是全局变量 所以枚举也是有它自己的优点的 3.枚举类型的使用 在使用枚举时,我们会创建一个枚举变量,然后用枚举类型中的枚举常量给它赋值,如下: #include
这里就可以使用枚举了。...{}中的内容是枚举类型的可能取值,也叫枚举常量。 这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。...枚举的优点: 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查,更加严谨。...比如: union Un { //公用一个存储空间 char c; //4个字节 int i; //1个字节 }; Union Un u;//联合体的定义 举个例子 可以利用联合体特点...printf("%d\n", sizeof(u)); return 0; } 输出结果是16 i 和 arr[7] 大小分别为4和14,取最大值14,但是最大值必须为对齐数的整数倍,对齐数是8,所以联合体大小为
文章目录 一、结构体嵌套 二、结构体数组 三、联合体 四、枚举 五、C语言字节对齐 案例1 案例2: 六、typedef 一、结构体嵌套 #include // 出生日期:年月日 struct...pCID[i]).BirthDate.iMonth, (pCID[i]).BirthDate.iDay, (pCID[i]).cAddress); } return 0; } 结果如下: 三、联合体...在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(union),它的定义格式为: union 共用体名 { 成员列表...... }; 共用体有时也被称为联合或者联合体; 结构体和共用体的区别在于...ch; double d; }ud; 3、如果不再定义新的变量,也可以将共用体的名字省略: union { int i; char ch; double d; }ud,cd; 四、枚举...{ false, true } end_flag, match_flag; //定义枚举类型并声明了两个枚举型变量 方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明
联合体 1. 1 联合体类型的声明 像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。...所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。...(因为联合体至少得有能力保存最大的那个成员)。...1. 3 相同成员的结构体和联合体对比 我们再对比一下相同成员的结构体和联合体的内存布局情况。...Un2 :short c[7] 是最大的成员,大小是14,联合体的对齐数是4,所以这个联合体的大小是16。
枚举类型 顾名思义,就是一一列举 枚举类型的定义 enum Day//星期 { Mon, Tues, Wed, Thur, Fri, Sat, Sun }; 其中定义的Day就是一个枚举类型...{}中的内容是枚举类型的可能取值,也叫枚举常量 。这些可能取值都是有默认值的,默认从0开始,逐个+1。当然也可以在最开始给定初值,但是在外面就不能改变了,因为这是一个常量。...枚举的好处 明明可以用 #define 代替,为什么还要用枚举呢? 1、增加代码的可读性和可维护性。 2、和 #define 定义的标识符相比,枚举有类型检查,更加的严谨。...因为枚举类型是封装在一个类型中,是局部变量。 4、便于调试。#define是不可调试的,在预处理阶段就已经改变。 5、便于使用,一次可以定义多个常量。
; printf("%d\n", sizeof(struct S3)); 首先,double占八个字节,偏移量为0: char对齐数为1,放在一的倍数,对齐8 i对齐数为4,对齐在4的倍数上,及12...我们来分析 c1为零偏移量,s3占十六个字节,但对齐位置则在8的倍数上即可, d对齐在8的倍数,从24开始 总大小及为最大对齐数(8)的整数倍,最终大小为32 为什么会有内存对齐?...定义枚举 枚举通过关键字 enum 定义。...枚举成员的值 默认情况下,枚举的第一个成员的值是 0,后续成员的值依次递增。...; } 优点: 代码可读性:使用枚举可以使代码更清晰,更易于理解。 类型安全:枚举提供了一个类型安全的方法来表示一组整数值。 调试易用性:在调试时,枚举类型的值通常比整数更易于理解 感谢阅读!
一、联合体(共用体) 1、声明 联合体和结构体一样可以有多个成员,成员类型可以不同。...联合体所有成员共用一块空间,所以联合体又叫 共用体 一个联合变量的大小至少是最大成员的大小 在声明上,联合体和结构体类似,只是把struct关键字换成了union关键字。...⼤端 } 二、枚举类型 1、声明 枚举就是一 一列举, 比如列举性别有男女,列举月份有1~12月,列举一周有7天 枚举类型关键字enum 星期: enum Day//星期 { Mon, Tues,...{ }中的内容就是枚举类型的可能取值,也叫 枚举常量 这些枚举常量是有值的,默认从0开始递增,但也可以在声明的赋初值 enum Color//颜⾊ { RED=2, GREEN=4, BLUE=...枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用 3、使用 使用枚举常量给枚举变量赋值 enum Color//颜⾊ { RED=1, GREEN=2, BLUE=4 }; enum
联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。...所以联合体也叫:共⽤体。 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。...枚举类型的声明 枚举顾名思义就是⼀⼀列举。...枚举?...printf("选择错误,重新选择\n"); break; } } while (input); return 0; } 以上就是关于联合体和枚举的详细介绍啦
是枚举类型,其中的变量叫做枚举类型的可能取值,也叫枚举常量 其中每个枚举常量都是有他们自己的值的,如果你不给他们赋初值的话,默认从0开始,一次递增1。...当然如果你想要对他们定义的话,可以这样做 enum Color//颜色 { RED=1, GREEN=2, BLUE=4 }; 观察下面代码及运行结果,可以看到这些枚举常量分别对应的值 这里要注意一点...四、联合体 (共用体 ) 4.1联合类型的定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员共用一块儿空间(所以,顾名思义,联合体也叫共用体) 例如: //联合类型的声明...,变量所包含的成员的地址都是相同的,而且联合体类型的大小,是变量所包含的成员中类型所占字节数最大的数,种种迹象表明,联合体变量所包含的这些成员是共用一块空间的 一道面试题: 编程,用联合体判断当前机器的大小端字节序...,联合等自定义类型的相关知识,其中结构体和位段介绍时间较长,这两个部分也是重要的内容请大家耐心观看 剩下的枚举和联合体大家可做了解,丰富自身的知识库,以后会深入讲解这部分的内容的
这篇文章我们继续来学习C语言中的另外两种自定义类型——枚举和联合(共用体),一起来学习吧!!! 1. 枚举 枚举也是C语言中的一种自定义类型。...月份有12个月,也可以一一列举 我们想描述这些值,就可以使用枚举。 1.2 枚举类型的定义 那枚举类型应该如果定义呢?...联合体(共用体) 联合体也是一种特殊的自定义类型 2.1 联合类型的定义 那联合体要怎么定义呢?...我们看一下结果: 2.4 联合体大小的计算 在联合体的特点里我们已经知道: 一个联合体的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员) 我们在上面举的例子中的联合体大小就是它的最大成员的大小...,但是不是所有的联合体大小都是这样呢?
领取专属 10元无门槛券
手把手带您无忧上云