问题来源
定义一个结构体:a
运行sizeof(a)
得到的结果不是自己想要的?
为什么?
一个一个分析
#include <stdio.h>
struct number_1
{
int a;
int b;
int c;
}st1;
struct number_2
{
char a;
int b;
double c;
}st2;
struct number_3
{
char a;
int b;
}st3;
struct number_4
{
char a;
char b;
char c;
int d;
}st4;
int main(int argc, char const *argv[]) {
printf("st1:\n");
printf("%d\n",sizeof(st1.a)+sizeof(st1.b)+sizeof(st1.c));
printf("%d\n",sizeof(st1));
printf("st2:\n");
printf("%d\n",sizeof(st2.a)+sizeof(st2.b)+sizeof(st2.c));
printf("%d\n",sizeof(st2)); //刚好是double类型的二倍
printf("st3:\n");
printf("%d\n",sizeof(st3)); // int类型的二倍
printf("st4:\n");
printf("%d\n",sizeof(st4)); // int类型的二倍
return 0;
}