#include <stdio.h>
struct stu{
char a[8]; //1*8=8
int b[4]; //4*4=16
double c; //8
int d; //4
}a; //8+16+8+4=36
void main()
{
printf("%d %d %d %d %d %d",sizeof(a.a),sizeof(a.b),sizeof(a.c),sizeof(a.d),sizeof(a));
}
为什么vc6.0 结构体的字节数印出来应该是36,为什么是40?
简单说,一个结构体所占字节数是其成员类型中最大长度的倍数。即对vc++环境:若有double类型成员,则结构体长度是8的倍数;否则,若有int类型,则是4的倍数;否则,就是1的倍数。你可分别用上述三种类型的成员、声明一个结构体类型并定义变量a,执行程序void main(){printf("%d\n",sizeof(a));}即可获知上述结论。