C语言中结构体计算大小的规则
1、printf("char:%d\n",sizeof(char));
printf("float:%d\n",sizeof(float));
printf("int:%d\n",sizeof(int));
printf("double:%d\n",sizeof(double));
//打印出各类型变量的大小

2、printf("s1:%d\n",sizeof(struct s1));
printf("s2:%d\n",sizeof(struct s2));
printf("s3:%d\n",sizeof(struct s3));
printf("s4:%d\n",sizeof(struct s4));
printf("s5:%d\n",sizeof(struct s5));
printf("s6:%d\n",sizeof(struct s6));
printf("s7:%d\n",sizeof(struct s7));
//打印出各个结构体的大小

3、struct s1{
char ch1;//1
char ch2;//1
int i;//4
};//结构体花括号后面要记得加;

4、struct s2{
char ch1;//1
int i;//4
char ch2;//1
};

5、struct s3{
char ch;//1
int i;//4
char str[10];//10
};

6、struct s4{
char ch;//1
int i;//4
struct s{//8
char ch1;//1
int j;//4
}stmp;//结构体只是一个声明,不占空间
float f;//4
};

7、struct s5{
char ch;
int i;
union{ //联合结构体,只按照里面最大的来算
char ch1;
int j;
};
};

8、//#pragma pack(4)//指定向4,最大是8,如有超出指定范围,就按照指定范围的来计算
struct s6{
char ch;//1
int i;//4
float f;//4
double d;//8
};
#pragma pack(10)//如没有超出指定范围,就按照最大的来计算
struct s7{
char ch;
int i;
float f;
double d;
};

9、运行程序,结构体的对齐方式很浪费空间,可是按照计算机的访问规则,效率提高了。
