网站建设模板哪家好,做网站图片代码怎么居中,哈尔滨最新信息,福建省建设工程继续教育网站结构体是用户建立由不同类型数据组成的组合型数据结构。
结构体的大小不是简单地数据类型的相加#xff0c;而是需要考虑到系统在存储结构体变量时的地址对齐问题。
#xff08;1#xff09;结构体成员或者加上偏移量必须是下一个成员大小的整数倍
#xff08;2#xf…结构体是用户建立由不同类型数据组成的组合型数据结构。
结构体的大小不是简单地数据类型的相加而是需要考虑到系统在存储结构体变量时的地址对齐问题。
1结构体成员或者加上偏移量必须是下一个成员大小的整数倍
2结构体大小必须是最大成员大小的整数倍
struct A { int a; //4 float b;//4 };//8
int类型占4个字节刚好是float类型的整数倍这个结构体就直接相加就可以了。
struct B { char a;//13 int b;//4 };//8
因为char类型只占一个字节int类型占4个字节所以要偏移3个字节才是int的倍数所以总共是8个字节
struct C { char a;//11 short b;//2 int c;//4 };//8
char类型占一个字节short占两个字节偏移量为1相加为4int类型占4个字节,4刚好是4的倍数所以总共是8个字节
struct D { char a;//13 int b;//4 short c;//2 };//102
char占一个字节偏移3个字节是int的整数倍short占两个字节总共是10字节但是结构体总大小必须是最长类型大小的整数倍所以再偏移两个字节一共为12个字节。
PSstruct C 和 srcuct D 存储的类型都是intshort和char类型但是一个是8个字节一个是12个字节这就需要用户在定义时注意类型的排列问题注意内存的使用空间。
struct II { int a;///4 char b;//13 };//8
struct I { float x;//4 struct II y;//8 };//12
struct II 的大小为8个字节struct I 的大小为float4加上struct II 的大小8为12个字节。之所以不是16个字节是因为只需要遵循是最大单个类型的整数倍就可以了。