下面两段程序分别输出什么?求解释?
第一段:int x;
struct B{
int a;
char b;
short c;
};
x = sizeof(struct B);
printf("%d\n",x);
第二段:
int x;
struct B{
char b;
int a;
short c;
};
x = sizeof(struct B);
printf("%d\n",x); 两个程序段不是一样的吗,有区别吗
都输出:x=9
把结构体内定义的变量所占用的字节数据加起来就是了 是不是要考虑对齐?
我C丢给大学了 sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 第一个输出8,第二个输出12;
操作系统要保持4字节对齐的哈
第一个结构体struct B{
int a;
char b;
short c;
};
系统给a分配了4字节,剩下的b和c分配了4字节,其中b占了前两个字节,c占了后两个字节。
第二个结构体struct B{
char b;
int a;
short c;
};
系统给b分配了4字节,因为后面a本身是整型就要占4字节。
系统给a也分配了4字节。
系统给c分配了4字节,尽管c只占两个字节哈
不知道这样解释明白了没,呵呵。
页:
[1]