怎么做公司免费网站,我的世界查找建筑网站,手机网站开发书籍,app开发技术路线结构体中的成员并不是紧挨着分布的#xff0c;内存分布遵循字节对齐的原则。 按照成员定义的顺序#xff0c;遵循字节对齐的原则存储。 字节对齐的原则#xff1a; 找成员中占据字节数最大的成员#xff0c;以它为单位进行空间空配 --- 遇到数组看元素的类型 每一个成员距离…结构体中的成员并不是紧挨着分布的内存分布遵循字节对齐的原则。 按照成员定义的顺序遵循字节对齐的原则存储。 字节对齐的原则 找成员中占据字节数最大的成员以它为单位进行空间空配 --- 遇到数组看元素的类型 每一个成员距离它所在结构体空间的首地址 必须是 它所占字节数的整数倍。 结构体空间必须是 所占 字节数最大成员的整数倍。 例1
struct test1
{char a;short b;int c;double d;
};// 看这个结构体在内存中的成员分布情况怎么看?
struct test1 t1;
printf(%d\n,sizeof(t1)); // 16
printf(%p %p %p %p,t1.a,t1.b,t1.c,t1.d); // 90 92 94 98 例2
struct test2
{char a;int c;short b;char d;double f;char c2;
};struct test2 b;
printf(%d\n,sizeof(b)); // 32 例3
struct test1
{char a1;double c;char a2;
};struct test2
{char a;short b;struct test1 t1; // char t1.a1;// double t1.c;// char t1.a2;short d;
};struct test2 v;// 找最大成员如果里面有结构体 打散看 --- 分配单位是 8个字节
printf(%d\n,sizeof(v)); // 40printf(%p %p %p %p %p %p,v.a,v.b,v.t1.a1,v.t1.c,v.t1.a2,v.d); // 78 7A 80 88 90 98