15.自定义类型:联合和枚举

一.联合体

cpp 复制代码
union u
{
	char c;
	int u;
};

int main()
{
	union u uu;
	printf("%zd\n", sizeof(uu));
	printf("%p\n", &uu);
	printf("%p\n", &(uu.c));
	printf("%p\n", &(uu.u));

	return 0;
}

相同成员的结构体和联合体对比

联合体大小的计算

cpp 复制代码
union Un1
{
   char c[5];//5
   //1 8 1
   int i;//4 8 4
};

union Un2
{
   short c[7];//14
   int i;//4
};

int main()
{
   printf("%zd\n", sizeof(union Un1));//8
   printf("%zd\n", sizeof(union Un2));//16

   return 0;
}

对于不同的商品,我们只使用一种类型,所以这样就能节省一定的空间

cpp 复制代码
union U
{
	int n;//4
	struct S
	{
		char c1;
		char c2;
		char c3;
		char c4;
	}s;//4
};

int main()
{

	union U u = { 0 };
	u.n = 0x11223344;
	printf("%x %x %x %x\n", u.s.c1, u.s.c2, u.s.c3, u.s.c4);

	return 0;
}

写一个程序,判断当前机器是大端?还是小端?

cpp 复制代码
int check_sys()
{
	int n = 1;//01 00 00 00     00 00 00 01
	return *(char*)&n;
}

int check_sys()
{
	union
	{
		char c;
		int i;
	}u;
	u.i = 1;
	return u.c;
}

int main()
{
	int ret = check_sys();
	if (ret == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

二.枚举类型

cpp 复制代码
enum Day//星期
{
 Mon,
 Tues,
 Wed,
 Thur,
 Fri,
 Sat,
 Sun
};
cpp 复制代码
enum Color//颜⾊
{
 RED,
 GREEN,
 BLUE
};
cpp 复制代码
//枚举的关键字
enum Sex
{
	//这里列举枚举enum Sex的可能取值
	//这些可能取值是常量,也叫枚举常量
	MALE=5,
	FEMALE=8,
	SECRET=10
};

//#define MALE 5
#define MAX 10


int main()
{

	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);

	enum Sex s = MALE;
	s = FEMALE;

	return 0;
}

1.枚举类型的优点

2.枚举类型的使用

相关推荐
Morwit2 小时前
【力扣hot100】64. 最小路径和
c++·算法·leetcode
OliverH-yishuihan3 小时前
开发linux项目-在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”
linux·c++·windows
七禾页丫3 小时前
面试记录12 中级c++开发工程师
c++·面试·职场和发展
wifi chicken3 小时前
数组遍历求值,行遍历和列遍历谁更快
c语言·数据结构·算法
qingyun9893 小时前
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签
前端·javascript·数据结构
zmzb01034 小时前
C++课后习题训练记录Day56
开发语言·c++
编程小Y4 小时前
C++ Insights
开发语言·c++
bubiyoushang8884 小时前
基于蚁群算法的直流电机PID参数整定 MATLAB 实现
数据结构·算法·matlab
王老师青少年编程5 小时前
csp信奥赛C++标准模板库STL案例应用5
c++·stl·set·集合·标准模板库·csp·信奥赛
永远睡不够的入5 小时前
直接插入排序、希尔排序、选择排序
数据结构·算法·排序算法