联合体定义
在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。
假如我们要一个unsigned int型 变量 0-3位 学号 4-7位 年龄 8-11位 性别 其他位代表其他信息
#include <stdio.h>
struct info
{
unsigned int id:4,
age:4,
sex:4,
other:16;
}__attribute__((packed));
/*修改其中一个成员,其他成员也自动修改,因为占用的是同一块内存*/
union student
{
unsigned int tmp;
struct info person;
};
int main(int argc, char** argv)
{
union student person;
person.tmp = 0xffff0111;
printf("person id = %d\n"
"person age = %d\n"
"person sex = %d\n"
"person other = %d\n",
person.person.id, person.person.age, person.person.sex, person.person.other);
return 0;
}
//写一个小练习就知道 位域以及联合体的是怎么使用的了。