上海频道网站建设,信阳网站公司,网站建设合同书范本,快速网页制作工具上篇文章介绍了结构体相关的内容#xff0c;大家可以点击链接进行浏览#xff1a;c语言进阶部分详解#xff08;详细解析自定义类型——结构体#xff0c;内存对齐#xff0c;位段#xff09;-CSDN博客
各种源码大家可以去我的gitee主页进行查找#xff1a;唔姆 (Nerow…上篇文章介绍了结构体相关的内容大家可以点击链接进行浏览c语言进阶部分详解详细解析自定义类型——结构体内存对齐位段-CSDN博客
各种源码大家可以去我的gitee主页进行查找唔姆 (Nerowlp) - Gitee.com
今天要介绍的是枚举与联合的相关内容 目录
一.枚举
1.枚举类型的定义 2.枚举的优点
3.枚举的使用
二.联合共用体
1.联合类型的定义
2.联合的特点
应用判断当前计算机的大小端存储
3.联合大小的计算 一.枚举 枚举顾名思义就是一一列举把可能的取值一一列举 1.枚举类型的定义
enum Sex//性别
{MALE,FEMALE,SECRET
}
enum Color//颜色
{RED,GREEN,BLUE
}; 上述代码定义的 enum Sex enum Color 都是枚举类型。 { } 中的内容是枚举类型的可能取值也叫 枚举常量 这些可能取值都是有值的默认从 0 开始一次递增 1 当然在定义的时候也可以赋初值 enum Sex
{MALE,FEMALE,SECRET
};int main()
{printf(%d\n, MALE);printf(%d\n, FEMALE);printf(%d\n, SECRET);return 0;
}
默认值便是从零开始 也可以自己进行主动赋值 大家也可以猜一下这段代码输出什么
enum Sex
{MALE,FEMALE8,SECRET
};int main()
{printf(%d\n, MALE);printf(%d\n, FEMALE);printf(%d\n, SECRET);return 0;
}
答案揭晓 2.枚举的优点 增加代码的可读性和可维护性 和#define定义的标识符比较枚举有类型检查更加严谨。 防止了命名污染封装 便于调试 使用方便一次可以定义多个常量 3.枚举的使用
enum Color//颜色
{RED3,GREEN2,BLUE4
};
enum Color cl GREEN;//只能拿枚举常量给枚举变量赋值才不会出现类型的差异 二.联合共用体
1.联合类型的定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员特征是这些成员公用同一块空间所以联合也叫共用体 union A //定义一个共用体
{char a;int b;
};int main()
{union A a; //创建一个共用体变量printf(%p\n, a);printf(%p\n, (a.a));printf(%p\n, (a.b));return 0;
}
可以看到三个地址是一样的 2.联合的特点 联合的成员是共用同一块内存空间的这样一个联合变量的大小 至少是最大成员的大小 因为联合至少得有能力保存最大的那个成员 应用判断当前计算机的大小端存储
union A //定义一个共用体
{char a;int b;
};
int judge()
{union A u;u.b 1;return u.a;
}int main()
{int a judge();if (a 1){printf(是小端);}else{printf(是大端);}return 0;
}
众所周知vs2019 是小端储存 3.联合大小的计算 联合的大小至少是最大成员的大小当最大成员大小不是最大对齐数的整数倍的时候就要对齐到最大对齐数的整数倍 union U1
{char arr[5]; //5个字节 对齐数是1int a; //4个字节 对齐数是4
};
int main()
{printf(%d, sizeof(union U1));//如果只是最大的成员变量的大小那应当输出5return 0;
}
但结果是8 好啦这次枚举联合共用体就讲解到这里。下一次会继续记录我学习的过程。希望能对大家有所帮助。