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
", sizeof(d1));                          // 4
    printf("%c %d %d
", d1.ch, d1.num1, d1.num2);       // A 65 65

    Demo2 d2;
    d2.num = 24897;
    printf("%x
", d2.num);                              // 6141
    printf("%x %x
", d2.ch[3], d2.ch[2]);               // 0 0
    printf("%x %x
", d2.ch[1], d2.ch[0]);               // 61 41
}
原文地址:https://www.cnblogs.com/1203ljh/p/4728759.html