1.首先对于结构体,是用户自定义的一种数据类型,组成结构型数据的每个数据称为结构型数据的成员。
结构体我们一般定义的形式:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
:
数据类型 成员名n;
}
2.关于结构体的字节对齐
因为结构体的数据类型类型是用户自己定义的,结构体的所占空间字节大小是我们关注的重点。
例如上图,会认为所占字节大小是7,char类型占1个字节,int类型占4个字节,short类型占2个字节,但并不是的。在结构体当中,定义变量开辟空间时,会根据结构体成员类型当中的int类型所占空间大小开辟。
所以上图,开辟的都是4个字节的空间,首先char类型c变量占1个字节,但剩余3个字节对于int类型i变量是不够的,char类型变量c就会直接占用4个字节,int类型变量i占用4个字节,short类型变量s是占2个字节,但在这个结构体中,会直接占用4个字节。
综上所述,这个结构体所占的空间大小是12个字节。
3.总结
关于结构体的字节对齐一定要完全理解,另外在定义结构体时,也要考虑怎样能够使得所占空间较小,这样比较节省空间。