1. 前言
前边我们已经了解了结构体在C语言当中是如何使用的,今天咱来一起聊一聊联合体与枚举在C语言当中又是如何运用的呢
2. 联合体的了解与运用
2.1 联合体的声明:
相比于结构体来说,联合体最大的区别就在于它是联合体当中所有成员共用一块内存空间,所以联合体又称共用体,举个例子:
比如,假设为这个联合体开辟了一个4个字节的空间,其中两个成员,分别对齐进行赋值,调试观察该成员在内存当中发生的改变
union S
{int a;char q;
}s;int main()
{s.a = 100;s.q = 'a';return 0;
}
理解:
2.1.2 联合体大小计算:
在上我们了解到联合体中的成员是共用一块内存区域的,所以在我们计算其大小时,应当选择联合体中最大成员的大小作为联合体的大小,而又因为内存对齐的原因,联合体的大小需为联合体成员中,单个成员中最大类型的整数倍(如有不理解的地方可以去看结构体详解这篇文章喔)
举例:
union U
{char a[20];int a1;
};union U1
{short b[5];int b1;
};int main()
{printf("%zd\n", sizeof(union U));printf("%zd\n", sizeof(union U1));return 0;
}
//兄弟们不妨也来算算最终两个联合体的大小是多少
理解:
3. 枚举(enum)的了解与运用
3.1 枚举的声明:
举例:
enum E
{serect,box,sister
};
3.2 枚举的使用:
枚举顾名思义就是穷举,所有可能,下边我们来一起了解一下枚举函数该如何去使用(enum内的成员,都是从整数0开始累加的,每个成员又代表着一个整形数字):
enum E
{serect,box,sister
};int main()
{enum E e1 = serect;enum E e2 = box;printf("%d\n", e1);printf("%d\n", e2);}//输出结果
0 1
再来看一段代码:
enum E
{serect,box = 245,sister
};int main()
{enum E e1 = serect;enum E e2 = box;enum E e3 = sister;printf("%d\n", e1);printf("%d\n", e2);printf("%d\n", e3);return 0;}
//它的输出结果又是什么呢?
题解:
3.3 为什么要用枚举,枚举的优势:
关于为什么要使用枚举这一点,小博给兄弟们找了一些参考资料,希望可以帮助兄弟们理解的更加透彻:
(今日分享到此结束,如觉得对您有帮助,还请点赞三联支持一下呢,Thanks♪(・ω・)ノ)