枚举
首先老规矩枚举是什么
枚举顾名思义就是一一的列举出来,把我们能想到的每一种可能性都列举出来。
给大家举个例子一周的星期一到星期日可以列举,国家的名字可以列举性别有男女月份日期都可以类似于这样的常见类型都可一一列举这就是枚举
代码举例:
enum Day
{
Mon,
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
上面所定义的就是枚举常量(Mon Tues and so on)enum Day 也就是枚举类型
***这里我们要记住枚举的字节大小是个四个字节
为什么用枚举
- 增加代码的可读性和可维护性
- 和#define定义的标识符比较枚举有类型检查,更加严谨。
- 防止了命名污染(封装)
- 便于调试
- 使用方便,一次可以定义多个常
如何用枚举(怎么做)
枚举的使用代码
enum Color
{
RED=1,
GREEN=2,
BLUE=4
};
enum Color clr=GREEN;
这里要强调的就是枚举只能拿上面已经列举过的值进行定义例如RED如果输出就会是1下来如果没有自己定义那么就会一次的增加
enum Color
{
RED=1,
GREEN,
BLUE
};
例如这样GREEN就会等于2 BLUE就会等于3.
联合(共用体)
联合是什么
联合类型的定义 :
联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块 空间(所以联合也叫共用体)。
//联合类型的声明
union Un { char c; int i; };
//联合变量的定义
union Un un;
//计算连个变量的大小
printf("%d\n", sizeof(un));
为什么用联合体
特点:联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为 联合至少得有能力保存最大的那个成员)。
怎么用联合体
例如大小端判定
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
union Un
{
int i;
char c;
};
int main()
{
union Un u;
u.i = 1;
if (u.i == 0x01)
{
printf("min\n");
}
else
{
printf("max\n");
}
return 0;
}