联合体 - 枚举类型-特殊结构体位段
联合体 - 枚举类型
联合体
union node{
char a[4];
int b;
int c;
};
联合体是结构体中所有的元素共用同一个内存,共用的是一个最大的内存,给a赋值为'A', 那么打印a的时候打印出来的是A,打印int出来的时候是65.
一般用来作为标志位,或者硬件中只有0或1的状态时使用的。当联合体只有一个int大小时,把其中一个赋值为1,其他的都是1.
枚举类型
枚举类型是符号常量
就是用一个符号代替一个数字
在写程序的时候要避免幻数的存在
幻数:就是大量的常数
//在写推箱子的时候为了避免大量的数字出现,导致幻数存在可以使用枚举类型
enum Dir {left,right,up,down};
//默认赋值:其中从左到右默认为0,1,2,3。
enum Color {red=1,blue,white=8,green,black};
//部分初始化,从第一个已经初始化的值到后面依次加一
//上例为:red=1,blue=2,white=8,green=9,black=10
枚举类型可以传参的,等于传入了一个常量类型
位段
一般用来节省内存的
位段的使用方法
struct num{
int a:2; //表示这个数在二进制位上只有两位,范围为0~3.后面的数字表示二级制的位数
int b:3;
int c:1;
};
//当你使用位段赋值时,要注意是不是溢出了。假设给a赋值为4,溢出了a的值为0,4=100,取后两位
c语言结构体必须有成员,位段必须有位数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现