位域、联合体的使用方法

1 篇文章 0 订阅

联合体定义

在进行某些算法的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;
}
//写一个小练习就知道 位域以及联合体的是怎么使用的了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值