无名子结构的嵌套。
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(¶, 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(¶, 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(¶, 0x00, sizeof(struct stu)); para.e = 10; printf("e= %d\n", para.e); printf("f= %d\n", para.f); }
e= 10
f= 32767
浙公网安备 33010602011771号