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

枚举

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

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

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

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

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

4.便于调试

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

联合—联合体(共用体)

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

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

扫描二维码关注公众号,回复: 15209974 查看本文章

联合的特点:

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

练习题:

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

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的倍数)

猜你喜欢

转载自blog.csdn.net/m0_66307842/article/details/123302149