本博客以32位也就是四字节为例子:
#include <iostream>
struct D{
int ff;
char a;
char c;
char d;
};
struct A
{
char a;
int ff;
char c;
char d;
};
struct B
{
char a;
char c;
int ff;
char d;
};struct C
{
char a;
char c;
char d;
int ff;
};
union E{
char a;
char c;
char d;
int ff;
};
int main() {
char ch='\t';
char dddd=54;
short bcv;
printf("%d",sizeof(D));
printf("\n%d",sizeof(ch));
printf("\n%d",sizeof(short));
printf("\n%d",sizeof(A));
printf("\n%d",sizeof(B));
printf("\n%d",sizeof(C));
printf("\n%d",sizeof(E));
return 0;
}
可以看到结构体的数据变量放的位置不同会导致结构体所占用的内存大小都不一样,他以四字节为一组,若加起来超过四字节就会重新开辟一个字即四个字节
union联合体则会采用最长的数据类型来共用内存。
网友评论