文章时效性提示
本文发布于 505 天前,部分信息可能已经改变,请注意甄别。
枚举
枚举就是一一列举
比如:一周有7天、性别有男女、一个月有30天,都可以一一列举
枚举类型的定义
1 |
|
枚举的优点
枚举相比#define的优点有哪些?
- 增加代码的可读性和可维护性
- 和#define定义的标识符比较,枚举有类型检查,更严谨。(define只是替换)
- 防止命名污染
- 便于调试
- 使用方便,一次可以定义多个变量
联合(共用体)
联合也是一种特殊的自定义类型,这种类型定义的变量也包含了一系列的成员,特征是这些成员共用一块空间(所以联合也叫共用体)
联合类型的定义
1 |
|
上面可以知道,u这个联合变量,占4字节,并且u里面的int和char类型的地址是一样的。
联合的特点
联合的成员共用一块内存空间,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有保存那个成员的能力)
判断当前计算机的大小端存储:
参考:大小端介绍
1 |
|
联合大小的计算
- 联合大小最小是最大成员的大小。
- 当最大成员大小不是最大对齐数的整数倍的时候,对齐到最大对齐数的整数倍。u的大小是8,是由于字符型的数组arr占5个字节,浪费3字节,对齐到8字节,是最大的成员,占8字节。
1
2
3
4
5
6
7
8
9
10
11
12
13
union Un
{
int a;
char arr[5];
};
int main()
{
union Un u;
printf("%d\n",sizeof(u));//8
return 0;
}