关于联合的一些介绍

 1 #include <stdio.h>
 2 
 3 typedef union _A{
 4     int i;
 5     char c[2];
 6 }A;
 7 
 8 A g_a; //266
 9 
10 int main(){
11     static A s_a;    // 266
12     A a_a;
13 
14     s_a.c[0] = 10;
15     s_a.c[1] = 1;
16 
17     g_a.c[0] = 10;
18     g_a.c[1] = 1;
19 
20     a_a.c[0] = 10;
21     a_a.c[1] = 1;
22 
23     printf("%d\n", g_a.i);
24     printf("%d\n", s_a.i);
25     printf("%d\n", a_a.i);
26 
27     getchar();
28 
29     return 0;
30 }


上面的结果是怎么样的?

在c89标准,32位平台下,全局变量g_a和局部静态变量S_a自动初始化为0, 局部变量a_a的值是随机的。编译器为这3个变量预留了4个字节的空间。

解释如下图;

 

posted @ 2014-03-25 11:20  kongmeng  阅读(171)  评论(0编辑  收藏  举报