一、共用体定义方法
1、直接定义
(1)为了以后定义,这里只是声明
union DEMO{ char c; int a; int b; };
(2)既声明了,也定义了,以后也可定义
union DEMO{ char c; int a; int b; }d;
(3)只定义一次,以后不需要定义了
union { char c; int a; int b; }d;
2、使用typedef
(1)
typedef union DEMO{ char c; int a; int b; }TEST;
(2)去掉DEMO
typedef union{ char c; int a; int b; }TEST;
二、使用共用体
1、赋值:
必须先初始化再赋值
TEST e; e.c = 'H'; 或者(&e)->c = 'H'; 或者*(&e).c = 'H';
2、引用:
e.c (&e)->c *(&e).c
三、一旦重新赋值,那么原来的值就都没了,但如果有数组情况不一样
1、代码如下:
#include <stdio.h> union hf { char c; int a[4]; int b; }; int main(int argc, char **argv) { union hf d; (&d)->c = 'H'; d.a[0] = 1<<8; d.a[3] = 1; printf("%d\t%d\t%d\n", d.c,d.a[3], d.b); return 0; }
2、结果如下:
0 1 256
c a[0] b 的数据相互覆盖,a[1] a[2] a[3] 与这些无关