疑问:结构体长度用sizeof求出来的值,为什么不是结构体内部成员变量长度的总和?
产生这种情况的原因更C语言内存分配规则有一些联系,成员变量的偏移量需要是最大成员变量的整数倍,char类型如果没有定义长度,偏移量是1,如果定义了长度,也需要满足偏移条件,例如char str[101]; 如果有int型成员变量,则下一个成员变量的偏移量是104。
疑问:结构体长度用sizeof求出来的值,为什么不是结构体内部成员变量长度的总和?
产生这种情况的原因更C语言内存分配规则有一些联系,成员变量的偏移量需要是最大成员变量的整数倍,char类型如果没有定义长度,偏移量是1,如果定义了长度,也需要满足偏移条件,例如char str[101]; 如果有int型成员变量,则下一个成员变量的偏移量是104。