一、共用体定义方法
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;//c占一个字节
int a[4];//a[0]占4个字节
int b;/b占4个字节
};
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] 与这些无关