长春网站分析,游戏加盟公司,在线旅游网站平台有哪些,网页设计网站开发培训目录
联合体
联合体是什么#xff1f;
联合体的大小计算
枚举
枚举是什么#xff1f;
为什么要使用枚举#xff1f; 联合体
联合体是什么#xff1f;
联合体也是个自定义类型#xff0c;它和结构体类似#xff0c;都是由多个成员构成#xff0c;可以有不同的内置…目录
联合体
联合体是什么
联合体的大小计算
枚举
枚举是什么
为什么要使用枚举 联合体
联合体是什么
联合体也是个自定义类型它和结构体类似都是由多个成员构成可以有不同的内置类型
但它们是有区别的
联合体之所以叫联合体是因为它里面的成员会重复使用一块内存空间
所以联合体也叫共用体
union Un
{char c;int i;
};
union Un是创建的联合体类型
大括号里面的是联合体成员
最后要加个分号不能忘记
联合体的大小计算 这里的char c 是会和 int i 共用一块空间的如图 所以我们最终如果打印这个联合体的大小
#includestdio.hunion Un
{char c;int i;
};int main()
{printf(%zd, sizeof(union Un));return 0;
} 联合体计算方法
1. 联合体的大小至少是最大成员的大小
2. 当最大成员的大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍
方法和上一章的结构体计算差不多但联合体相对较简单
例如
#includestdio.hunion Un
{short c[7];int i;
};int main()
{printf(%zd, sizeof(union Un));return 0;
}
根据上面的计算方法1
short为2个字节int为4个字节
最大成员为c[7]大小为2*714个字节
所以联合体的大小至少是最大成员14个字节的大小
根据上面的计算方法2
要调整到最大对齐数的整数倍这里不难看出最大对齐数为4
所以答案应该是16个字节
如果不会算最大对齐数可以看看我上一章结构体对齐规则
C语言自定义类型结构体-CSDN博客
枚举
枚举是什么
枚举其实就是全部列举
例如
enum Day
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};
enum Day是创建的枚举类型
大括号里面是成员会自动赋值从0开始
最后的分号也不能忘记
所以Mon是0Tues是1......Sun是6
所以这样明显是不正确的Mon不是应该是1吗
所以我们是可以改的
enum Day
{Mon 1,Tues,Wed,Thur,Fri,Sat,Sun
};
这样就会默认从1开始一直往下赋值
这样我们就可以在枚举作用的范围内直接使用它的成员作为值了跟宏定义类似
为什么要使用枚举
1. 增加代码的可读性相比数字来说使用文字能更让人读得懂代码的含义
2. 与#define相比它拥有类型检查更加严谨
3. 便于调试若#define会在预处理阶段就删除#define定义的符号
4. 使用方便可以一次定义多个常量
5. 遵循作用域枚举若只声明在函数内则只能在函数内部使用 完