结构体字节对齐与位域

结构体字节对齐与位域

code advance_struct .c
	#include<sdtio.h>
	struct person{
	int number;
		//4个
	char sex;
		//1个,空三个
	double money;
		//8个
	};
	int main(){
	//结构体内存
	printf("%lu\n",sizeof(struct Person));
	return 0;
	}

1.结构体所占的内存大小

	1.本身的成员变量类型
	2.结构体存在字节对齐
		结构体内部最大的单成员类型的整数倍
		如果下一个成员无法在有限的空间存放则需要一个额外的空间存放
	3.如何优化字节对齐
		1.按照有限空间合理排布成员顺序
		2.更改字节对齐方式
			字节按照1字节对亲 无额外的空间方式 直接等于所有成员的字节相加
			#pragma pack(1)
			1,2,4,8,16字节对齐方式可选值 其实就是基础类型字节大小

2.位域的概念 还是优化结构体占内存的方式

	针对整数类型的成员变量,可以通过位域指定其所占内存位的多少
	无法超过其本身的位数
		如char不能超过8位
	在成员变量后加冒号:加指定多少位
		注:一个字节8个位
	int number:1;
	char sex:1;
	double money;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值