潜学C语言——自定义数据类型--枚举和共用体

本文探讨了枚举和联合体在编程中的应用,包括它们的优点(如类型安全、命名规范和调试便利),并重点介绍了如何通过联合体测试系统字节序。讲解了联合体的特性,如共享内存空间和计算其大小的方法,以及一个实际示例来演示其用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举

enum Sex
{
	//枚举的可能取值
	MALE,
	FEMALE,
	SECRET,
};
int main()
{
	enum Sex s = MALE;
	return 0;
}

枚举的优点(为什么使用枚举):

1.增加代码的可读性和可维护性

2.和#define定义的标识符比较枚举有类型检查,更加严谨

3.为了防止命名污染(封装)

4.便于调试

5.使用方便,一次可以定义多个常量

联合—联合体(共用体)

联合也是一种特殊的自定义的类型 这种类型的定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)

可以看出他们使用的是同一个地址,所以称之为共用体

联合的特点:

联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员) 

练习题:

利用联合体测试出机器是大端存储还是小端存储

int check_sys()
{
	union Un
	{
		char c;
		int i;
	}u;
	u.i = 1;
	//返回1,表示大端
	//返回0,表示大端
	return u.c;
 }
int main()
{
	int a = 1;
	int ret = check_sys();
	if (1 == ret)
	{
		printf("小端\n");
	}
	else
		printf("小端\n");
}

联合大小的计算

联合的大小至少是最大成员的大小

当最大成员的大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍

例:

union Un
{
	int a;//4  8  4
	char arr[5];//5 1 8 1 
};
int main()
{
	union Un u;
	printf("%d\n", sizeof(u));
	return 0; 
}

输出值为8(4的倍数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流继承

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值