C语言-枚举、共用体

1. 共用体 前面章节学习了结构体,结构体里可以按顺序存放相同或者不同的数据类型,每个成员都有它对应的存储空间。
而共用体和结构体一样也可以按顺序存放相同或者不同数据类型,但是与结构体的区别是,共用体所有成员共用一个存储空间,存储空间由成员中存储空间最大的来决定。
定义共用体的关键字: union
下面通过结构体、共同体两个定义代码对比区别。
结构体定义示例:
struct app{ int a; char b;}; 结构体:每个成员是占用独立的空间,结构体成员之间会因为内存对齐产生间隙。
共用体定义示例:
union app{ int a; int b; char c;}; **共用体:**也称为联合体,采用内存覆盖技术,每个成员共用一个内存空间,开空间是以最大的成员开空间。 在单片机、嵌入式设备里使用较多。共用体的语法和使用方法(定义、成员变量的访问形式等等)与结构体一样。
共同体案例代码:
#include #include union app{ int a; int b; char c;};//匿名方式定义,只能在定义共用体的时候就定义变量union{ int a; int b; char c;}a1,a2,a3; //定义3个变量union app2{ int a; int b; char c;}b1,b2;typedef union app3{ int a; int b; char c;}c1; //c1是新的数据类型--union app3的别名int main(){ b1.a=65; b1.b=66; printf(%d\n,b1.a); //66 printf(%d\n,b1.b); //66 printf(%c\n,b1.c); //66 return 0;} 2. 枚举 c语言的枚举可以给一串有序的数字集合定义名字,特别是数量较多的整数需要定义名字时,比#define更加方便。特别是定义函数的返回值类型,特别方便,项目开发中,一般标准的函数返回值都有很多种情况,为了方便调用者判断错误类型,可以把这些错误值全部使用枚举定义,这样调用者就能清楚知道每个数值代表的含义。
枚举的定义语法:
enum 枚举名 {枚举元素1,枚举元素2,……}; 默认成员都是从0开始,如果某一个成员被赋了值,则该成员以后的元素都以此为基础递增。
枚举的定义及用法示例:
#include #include #define def_val 100//枚举类型/*枚举内部的是常量标识符,这些常量标识符就相当于全局变量(声明放在函数之外)枚举常量只能整型。默认情况下枚举值是从0开始的,依次递增。*/enum app{ a1='a',a2,a3,a4};typedef enum app2{ b1='a',b2,b3,b4}type_app2;//枚举在程序开发中最常用的地方是:表示函数执行的状态值。int main(){ printf(%d\n,a1); printf(%d\n,a2); printf(%d\n,a3); printf(%d\n,a4); return 0;}type_app2 func1(){ return b2;}enum app2 func2(){ return b3;} 枚举应用案例2:

巧用Golang泛型,简化代码编写
Temperature Sensor ICs Simplif
造工精致的单反相机“肢解”图
诺基亚如何真正释放5G力量和潜能方面的下一基石?
如何才能增强接线端子的实际防雷效果
C语言-枚举、共用体
这里有款很轻的便携太阳能板 适合长时间户外冒险
我国在动力电池方面获重大突破,研发出一种NCA三元高比能量动力锂电池
苹果为什么要与整个互联网行业为敌的态度来保护用户数据?
余承东表示正在研发可折叠的5G手机 预计明年推出
Maxim MAX17129低成本6串白光LED驱动方案
德赛西威携手行业伙伴协同共建车路云一体化的高质量融合发展
什么是IP地址?
如何判断需要几个触发器 如何判断触发器能否自启动
手持万用表购买指南
智慧校园:RFID在校园物联网平台应用
旋变变压器的作用及工作原理
5G时代,AI应用全面爆发,为半导体供应链注入新动能
为什么锤子新机加入iPhone“陪护”功能?老罗一语道破
FPGA数字图像显示原理与实现设计