网站建设的趋势,宁波城乡住房建设厅网站,北京活动网站制作,点击图片是网站怎么做的6.7 结构体的对齐规则
6.7.1 知识点引入 6.7.2 结构体自动对齐规则
1、确定分配单位(一行分配多少字节)
结构体中最大的基本类型长度决定
2、确定成员的偏移量
成员偏移量成员自身类型的整数倍 需要根据你所在平台的位数#xff0c;32位和64为类型大小不一样。cpu一次读取…6.7 结构体的对齐规则
6.7.1 知识点引入 6.7.2 结构体自动对齐规则
1、确定分配单位(一行分配多少字节)
结构体中最大的基本类型长度决定
2、确定成员的偏移量
成员偏移量成员自身类型的整数倍 需要根据你所在平台的位数32位和64为类型大小不一样。cpu一次读取的大小也不一样32位是一次读取4字节64位是一次读取8字节。占用的大小的字节数也不一致的需要经常记忆。
3、收尾工作
结构体的总大小分配单位整数倍
复习带背书 在32位系统中 char1 字节short2 字节int4 字节long4 字节float4 字节double8 字节long long8 字节指针类型4 字节在32位系统中指针类型的大小与 int 类型相同数组类型数组在内存中占用的字节大小为 T * N。例如int arr[10]int: 4*10 在64位系统中 char1 字节short2 字节int4 字节long8 字节float4 字节double8 字节long long8 字节指针类型8 字节在64位系统中指针类型的大小与 long 类型相同数组类型数组在内存中占用的字节大小为 T * N。 6.7.3 强制对齐规则
#pragma pack(value)时的指定对齐值value。注意value值为1 2 4 8 16
1、确定分配单位(一行分配多少字节)
分配单位 min(结构体中最大的基本类型value)
2、确定成员的偏移量
成员偏移量成员自身类型的整数倍
3、收尾工作
结构体的总大小分配单位整数倍
案例1 案例2 6.8结构体的位域
6.8.1结构体位域的概述
在结构体中以位为单位的成员咱们称之为位段(位域)
struct packed data{unsigned int a:2;unsigned int b:6;unsigned int c:4;unsigned int d:4;unsigned int i;
}data; a的类型是unsignedint a的大小只占2位二进制位
没有非位域隔开的位域叫相邻位域。
相同类型的相邻位域可以压缩。但是压缩的位数 不能超过自身类型的大小。
不要对位域取地址位域是以二进制段为存储没有内存的概念 对位域赋值 不要操作 位域本身位的宽度 6.8.2另起一个存储单元 这里对于嵌入式作用很大学习内容有点偏嵌入式底层学习所有学会struct基本怎么使就行了位域无所谓的可以不学 6.8.3无意义位段重要嵌入式方向
不是另起一个存储单元是被压缩的。占用两个字节的意思使之无法使用 6.8.4 案例