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
}

 

posted on 2015-08-13 23:27  huashunli  阅读(315)  评论(0编辑  收藏  举报

导航