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.枚举类型的使用

相关推荐
kiracrimson7 小时前
从缓存的角度看链表与线性表的差异
数据结构·链表·缓存
心抵鹊8 小时前
归并排序之翻转对(hard)
数据结构·算法
_Twink1e8 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
dong_junshuai9 小时前
每天一个开源项目#87 fmt:24.5K Stars 的 C++ 格式化核心
c++·开源·github
雪的季节10 小时前
Multisim14.0的详细中文安装步骤【附安装包】
c++
Persistent的粽子!11 小时前
C++:类与对象(二)
开发语言·c++
白狐_79811 小时前
408 数据结构|红黑树插入:只记两大类
数据结构
蒸蒸yyyyzwd11 小时前
cpp 选手备战秋招学习笔记 day23
c++·求职招聘
.YM.Z11 小时前
C++ STL 容器深度剖析:vector 与 list 的模拟实现及对比
开发语言·c++·vector·list
mengzhi啊13 小时前
QEventLoop loop配合loop.exec();替代while(1)。电脑cpu占用为0,使用while(1)cpu占用率100%
c++·qt