共用体

一、共用体定义方法

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] 与这些无关      



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值