#include<stdio.h> struct A {int A; };int main() {struct A a;printf("%d\n",sizeof(a));return 0; }
运行结果:4
#include<stdio.h> struct A {int a;int b; };int main() {struct A a;printf("%d\n",sizeof(a));return 0; }
运行结果:8
#include<stdio.h> struct A {int a;char b; };int main() {struct A a;printf("%d\n",sizeof(a));return 0; }
运行结果:8
分析:以结构体中最大的数据类型的字节为标准,随后的基础数据类型都会跟随它对齐
#include<stdio.h> struct A {char a; short b; int c;short d;char e; };int main() {struct A a;printf("%d\n",sizeof(a));return 0; }
运行结果:12
a |
| b | |
c | |||
d | e |
| |
13 | 14 | 15 | 16 |
32位计算机(主流):
long 8
int 4
short 2
char 1
#include<stdio.h> struct A {char a; short b; char c;int d;long long e; };int main() {struct A a;printf("%d\n",sizeof(a));return 0; }
运行结果:24
a |
| b |
c |
| |
d | ||
e |