构造类型——联合类型

联合类型和结构体类型基本相似,包括定义方式,声明方式都是一样的。

关键字 union

#include <stdio.h>
#include <stdlib.h>
union Un {
    char c;
    short s;
    int i;
}un1,un2;

int main(void)
{
    system("pause");
    return 0;
}

union 的特点是所有的成员共享一块内存。对比struct 的每一个成员都有自己的一块内存。

union它的内存模型是 □□□□

c的空间放在第一个字节,s的空间放在前两个字节,c的空间和s的空间是从起始地址重合。i也是从第一个空间开始放。

所以4个字节的空间,放下了 c,s,i。

这种存放空间的特点是 :当修改c的时候,第一个字节内的内容就被改变了, 别忘了 第一个字节的内容同样也是s,i的一部分内容。所以当你修改c的时候,s和i的数值也被改变了。

所以 只要修改一个成员,其他成员也会改变。

声明联合变量并初始化  

声明很简单,主要说一些初始化。

联合的初始化也有特点,因为它其中的所有的成员是共用一块内存,因此初始化的时候不能够对三个数据进行初始化。

联合的初始化只能初始化一个成员,初始化最大的成员。

 

#include <stdio.h>
#include <stdlib.h>
union Un {
    char c;
    short s;
    int i;
}un1;

int main(void)
{
    union Un un2 = { 34 };//初始化哪个都行,因为初始化任意一个,其他部分自动初始化为0。
    
    system("pause");
    return 0;
}

想初始化哪个成员,就把哪个成员放在union中的最前面。

 

转载于:https://www.cnblogs.com/dabing0983/p/10542826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值