union联合体
共用体(或联合体)定义:
在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互相覆盖。
共用体运用规则:
1.共用体变量分配的内存大小由最大成员的大小决定;
2.共用体变量的地址和它各成员的地址都是同一地址,所有成员的存放都是从低地址开始;
3.由于共享内存,在任何时刻只有一个成员起作用,对某一成员赋值,会覆盖其他成员相应字节上的值;
4.数组可以作为共用体的成员,也可以定义共用体数组;
5.共用体变量可以作为函数的参数和返回值;
6.共用体类型可以出现在结构体类型的定义中,结构体也可出现在公用体类型定义中。
#include <stdio.h> typedef union { int num1; int num2; char ch; }Demo1; // 实现长度不等覆盖 typedef union { int num; char ch[4]; }Demo2; // 实现整型按字节显示 int main() { Demo1 d1; d1.ch = 'H'; d1.num1 = 10; d1.num2 = 65; printf("%d\n", sizeof(d1)); // 4 printf("%c %d %d\n", d1.ch, d1.num1, d1.num2); // A 65 65 Demo2 d2; d2.num = 24897; printf("%x\n", d2.num); // 6141 printf("%x %x\n", d2.ch[3], d2.ch[2]); // 0 0 printf("%x %x\n", d2.ch[1], d2.ch[0]); // 61 41 }