结构体的各成员变量的内存布局问题
1.以定义时各成员变量出现的次序,依次保存。
2.结构体的大小需要地址对齐(结构体中每个成员变量在内存中的存放位置需要对齐)
在32位中
1.例子
struct node{
char a;
int b;
char c;
};//结构体大小为12
1.a占1个字节,又因为最大的int占4个字节,字节对齐,所以a占4个字节,其余3个字节为空
2.b占4个字节
3.c跟a同理,占4个字节
所以共12个字节,可看下图
2.例子
struct node{
char a;
char b;
int c;
};//结构体大小为8
1.a占1个字节,又因为最大的int占4个字节,字节对齐,所以a占4个字节,其余3个字节为空
2.b占1个字节,因为a后面的为空且能够存下b,所以b存放在a的后面
3.c占3个字节
所以共8个字节,可看下图
3.例子
struct node{
char a[5];
char b;
int c;
};//结构体大小为12