C语言联合体
Posted seekwhale13
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言联合体相关的知识,希望对你有一定的参考价值。
参考https://bbs.huaweicloud.com/blogs/391571
联合体,又叫共用体,是由程序员自己设定的一种自定义数据类型。和结构体一样,联合体也拥有许多成员变量,不过其所有的成员变量占用空间的地址都相同,即所有成员使用同一份空间。
联合体(union)与结构体(struct)的区别:
结构体中每个成员都有自己独立的存储空间,互不干扰;联合体恰恰相反,所有成员共用一段存储空间,大小以其中占据最大空间成员为准,在单片机的使用中可用来查询一组IO中某个IO口的电平或者用来访问一组数据中某一个位或几个位的具体数值。
#include <stdio.h>
typedef unsigned char uchar;
typedef union
uchar BYTE;
struct
uchar bit0 : 1;
uchar bit1 : 1;
uchar bit2 : 1;
uchar bit3 : 1;
uchar bit4 : 1;
uchar bit5 : 1;
uchar bit6 : 1;
uchar bit7 : 1;
BITTYPE;
unType;
void main()
unType Key_flag;
Key_flag.BYTE = 0x0F;
printf("first num is %d\\n", Key_flag.BYTE);
printf("first num is %d", Key_flag.BITTYPE.bit0);
运行结果:由于PC机上使用的是X86结构的 CPU,它是小端模式51单片机是大端模式很多ARM、DSP 也是小端模式(部分 ARM 处理器还可以由硬件来选择是大端模式还是小端模式),我们使用的stm32是小端模式,即低位地址存储低位数据。
first num is 15
first num is 1
也可应用:
typedef union
uchar BYTE;
struct
uchar bit0:1;
uchar bit1:1;
uchar bit2:1;
uchar bit3:1;
uchar bit4:1;
uchar bit5:1;
uchar bit6:1;
uchar bit7:1;
BITTYPE;
unType;
以上是关于C语言联合体的主要内容,如果未能解决你的问题,请参考以下文章