无名子结构的嵌套。

 1 #include <stdint.h>
 2 #include <string.h>
 3 typedef struct{
 4         int a;
 5         union{
 6                 int b;
 7                 int c;
 8                 struct{
 9                         int d;
10                         union{
11                                 int e;
12                                 int f;
13                         };
14                 };
15         };
16 }co;
17 main()
18 {
19         co para;
20         memset(&para, 0x00, sizeof(co));
21 //      para.a = 10;
22 
23         para.e = 10;
24         printf("a= %d\n", para.a);
25         printf("b= %d\n", para.b);
26         printf("c= %d\n", para.c);
27         printf("d= %d\n", para.d);
28         printf("e= %d\n", para.e);
29         printf("f= %d\n", para.f);
30 }

a= 0
b= 0
c= 0
d= 0
e= 10
f= 10

-----没有memset------

a= 342157040
b= 32767
c= 32767
d= 32767
e= 10
f= 10

 1 #include <stdio.h>
 2 #include <stdint.h>
 3 #include <string.h>
 4 typedef struct{
 5     int a;
 6     union{
 7         int b;
 8         int c;
 9         struct{
10             union{
11                 int e;
12                 int f;
13             };
14             int d;
15         };
16     };
17 }co;
18 main()
19 {
20     co para;
21     memset(&para, 0x00, sizeof(co));
22 //    para.a = 10;
23 
24     para.e = 10;
25     printf("a= %d\n", para.a);
26     printf("b= %d\n", para.b);
27     printf("c= %d\n", para.c);
28     printf("d= %d\n", para.d);
29     printf("e= %d\n", para.e);
30     printf("f= %d\n", para.f);
31 }

a= 0
b= 10
c= 10
d= 0
e= 10
f= 10

-------没有memset-----

a= 0
b= 10
c= 10
d= 0
e= 10
f= 10

gcc下结构体必须初始化,要不然值不确定。可是为什么把共用体里面的变量"d"修改一下位置就好了?

#include <stdio.h>
#include <string.h>
struct stu{
        int e;
        int f;
};
main()
{
        struct stu para;
//      memset(&para, 0x00, sizeof(struct stu));

        para.e = 10;
        printf("e= %d\n", para.e);
        printf("f= %d\n", para.f);
}

e= 10
f= 32767

posted @ 2012-12-04 14:57  静心小阁  阅读(247)  评论(0编辑  收藏  举报