结构体大小

 1 #include<stdio.h>
 2 #include <stdlib.h>
 3 
 4 /*
 5 
 6     结构体大小大于等于所有成员的大小之和
 7     char int  double float  //基本类型  double最宽基本成员
 8     结构体的大小必须可以整除最宽基本成员
 9     结构体成员的地址-结构体的首地址 =偏移量,必须是当前成员整数倍
10     结构体尾部不足的部分,就会被填充
11     结构体对齐,注意,节约内存
12     结构体中只有一个元素不存在对齐
13     可以手动设置编译器来设置来设置结构体成员对齐(右击项目选择属性->C/C++->代码生成-->结构体成员对齐)
14 
15 */
16 
17 struct MyStruct
18 {
19     char num1;
20     double num4;
21     int   num3;
22     char num5;
23     double num2;
24 
25 };
26 
27 struct MyStructX
28 {
29     char num1;
30     double  num4;//只有一个元素,不存在对齐
31 };
32 
33 void main()
34 {
35     struct MyStruct my1;
36     printf("%d", sizeof(struct MyStructX));
37     printf("\n%p", &my1);
38     printf("\n%p", &my1.num1);//取出结构体成员的地址
39     printf("\n%p", &my1.num4);
40     printf("\n%p", &my1.num3);
41     printf("\n%p", &my1.num2);
42     system("pause");
43 }

 

posted on 2015-05-18 13:10  Dragon-wuxl  阅读(128)  评论(0)    收藏  举报

导航