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
}

 

转载于:https://www.cnblogs.com/1203ljh/p/4728759.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值