首先看代码
1 #include <stdio.h>
2
3 typedef struct
4 {
5 double d;
6 char ch;
7 int a;
8 }test,*ptest;
9
10 int main(int argc, const char *argv[])
11 {
12 test t = {3.14,'a',10};
13 ptest pt = &t;
14 printf("%lf %lf %lf\n",t.d,(*pt).d,pt->d);
15 printf("%p %p %p\n",pt,pt+1,pt+2);
16 printf("%d\n",sizeof(test));
17 printf("%c\n",t.ch);
18 printf("%d\n",t.a);
19 return 0;
20 }
运行结果
地址每加1,移动16;所以结构体通过空间对齐之后是一个整体,和数组是完全不一样的。