struct student
{
char a;
int c;
short b;
};
printf("%d\n", sizeof(struct student));
这时char所给分配的是4个字节(因为int占4个字节)
struct student
{
char a;
short b;
int c;
};
printf("%d\n", sizeof(struct student));
这时char所分配的字节是2个字节(因为short占2个字节)
struct student
{
short b;
char a;
int c;
};
printf("%d\n", sizeof(struct student));
此时char所分配的字节还是2个(还是因为short占2个字节)
char ch;
printf("%d",sizeof(ch));
此时的char所分配的字节是1个。
那是由什么导致的呢?
这是由字节对齐导致的。字节按照一定规则在空间上排列就是字节对齐。
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。