无名子结构的嵌套。
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