结构体与共用体——共用体——C语言——day16

昨天介绍了下结构体,今天主要介绍共用体,枚举

共用体

概念:有时需要使几种不同类型的变量存放到同一段内存单元中。
例如,可把一个整型变量、一个字符型变量、一个浮点型变量放在同一个地址开始的内存单元中 。以上三个变量在内存中占的字节数不同,但都从同 地址开始(图中设地址为 1000) 存放。也就是使用覆盖技术,几个变量互相覆盖。这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。
结构体与共用体——共用体——C语言——day16_第1张图片

定义共用体类型变量的一般形式为:
union 共用体名
{
成员列表
}变量列表;

例如:
union data 
{
	int i; 
	char ch; 
	float f; 
}a,b,c; 
//变量列表也可以在其他函数中定义。

注意:
1.共用体
初始化 — 只能给一个值,默认是给到第一个成员变量的
2.共用体成员变量辅助
共用体用的数据最终存储的应该是最后一次给到的值。
但是只能影响到自己数据类型对应的空间中的数据
3.可以判断大小端
4.实际用途
a.节省空间
b.进行数据转换
5.共用体的大小:是成员变量中最大的那个成员的大小
6.共用体类型可以是函数参数,也可以是函数返回值类型
共用体,结构体类型定义出来之后,
a.定义变量
b.定义数组
c.定义指针
d.做函数参数,返回值类型

eg:
#include

union str{
	int a;
	char b;
	short c;
};

int main(void)
{
	union str d;
	
	d.a = 0x12345678;
	d.b = 'a';
	d.c = 0x99;

	printf("a = %#x\n",d.a);
	printf("b = %c:%#hhx\n",d.b,d.b);
	printf("c = %#x\n",d.c);

return 0;
}

输出的结果为:
结构体与共用体——共用体——C语言——day16_第2张图片

枚举类型

概念:如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举类型用 enum 开头。

eg:
enum weekday	//enum  枚举类型名 
{sun,			//名字 --- 代表一个值 --- 符号常量 
mon,
tue,
wed,
thu,
fri,
sat
};

注意:
1.枚举类型主要提高了代码可读性
2.枚举类型本质上是int类型
枚举类型与整型类型兼容
3.不足
因为枚举类型本质上是个整型类型,
所以枚举类型的变量的值,并不能真正限定在指定的哪些值范围中。
4.枚举类型
可以做函数形参和返回值
定义数组也可以,本质上就是整型数据。

你可能感兴趣的:(学习,c语言,java,开发语言)