1.声明形式:
struct 结构体名字
{
结构体成员
}结构体变量名;
2.赋值方法
3.结构体对齐:
1.起始偏移量:默认结构体第一个元素对齐0起始偏移量,第一个元素占一个字节,此时偏移量为1.
2.标准数:VS环境下为8,Linux环境没有
3.对齐数:指标准数与元素类型所占的字节数与标准数的最小值的整数倍为变量对齐的地址,且结构体所占的字节数必须是对齐数的整数倍,如果嵌套结构体那么对齐数为该结构体成员中最大的对齐数,然后该结构体的空间数为各成员所占空间数
4.char c2的对齐数是1,而0已经被char c1占据,所以它对齐了1并且占据了一个字节的空间
5.int i的对齐数为4,且此时4的倍数4没有被占据,由4可知0到2的空间已经被占据,但4空间空闲,所以int i对齐了4,且它占有4个字节的空间,所以结构体占据7-0等于8个字节,且是4的整数倍。
6.据上述,s2对齐变化:0,4,8
空间变化:1,8,9
但是9不是4的倍数,必须补到4的最小倍数12
7.空间对齐的原因:以空间换时间
8.结构体成员调用的两种方式