struct student{char a; int c; 短b; (; printf('%dn ',sizeof(structstudent ) ); 此时,分配给char的是4个字节(因为int将占用4个字节)。
struct student{char a; 短b; int c; (; printf('%dn ',sizeof(structstudent ) ); 此时,分配给char的字节为2个字节。 (因为short占了2个字节) ) )。
struct student{short b; char a; int c; (; printf('%dn ',sizeof(structstudent ) ); 此时,分配给char的字节还有2个字节。 还是因为short占了2个字节。
char ch; printf('%d ',sizeof ) ) ch ); 此时分配给char的字节是一个。
那是什么原因?
这是根据字节对齐的。字节按照一定规则在空间上排列就是字节对齐。
在现代的计算机中,内存空间用byte隔开,理论上似乎任何类型的变量的访问都可以从任何地址开始,但实际上是在访问特定类型变量的时候经常在特 定的内存地址访问,因此要按顺序排出。 这就是对准。