我有以下C代码
struct foo {
char a;
struct innerStruct table[2];
int c;
 bool b;
double d;
short e;
float f;
double g;
char *cptr;
void *vptr;
int x;
}
typedef struct {
char c1;
double *dptr;
char c2;
} innerStruct;
这段代码struct foo
会占用多少字节?我的意思是如果一个int需要4个字节而一个char需要1,我应该根据它增加(4 + 1)。另外,如果我们可以改变结构中那些元素的顺序,结构foo可以拥有的最小尺寸是什么?如果我们将其更改为64位而不是正常的32,会发生什么?是否会影响保存在内存中的整体大小?结构是否必须对齐,如果是,为什么?