struct 和union的区别

C/C++的数据类型包括基本数据类型和非基本数据类型,基本数据类型就是整型、实型等,非基本数据类型也称为构造数据类型,包括数组类型、结构体类型和共用体类型。其中结构体类型和共用体类型分别通过关键字struct和union来声明或定义。

  所谓构造数据类型,就是通过基本类型构造出来的类型嘛,因此构造数据类型的特点就是其中包含有多个元素,想想数组就明白了。数组中可以存放多个元素,但是每个元素的类型都一样,而结构体和共用体就大不相同了,下面来看看。

  先看看结构体struct和共用体union都是怎么定义的。

struct letuknowit
{
    char c;
    int a;
    float f;
    double dbl;
};
union letuknowit
{
    char c;
    int a;
    float f;
    double dbl;
};

  我们上面分别定义了一个struct和一个union,名字都叫做letuknowit,除了关键字之外其实看不出什么区别,不过这只是表面现象,struct和union之间还是有很大差别的。

  从上面的定义可以看出,struct和union都由多个不同的数据成员组成,这些成员可以是基本数据类型也可以是构造数据类型,也就是意味着struct和union的成员也可以是struct和union,这个我们以后再说,这里全部用基本数据类型。

  struct和union之间的差别在于,struct中的所有数据成员是同时存在的,而union中的成员在同一时刻只能选择一个。这就好比去吃饭,餐桌就是一个struct(结构体),摆在桌子上的每一道菜是这个struct的成员,这些成员(菜)是同时存在的;而酒杯就是一个union(共用体),它的成员就是各种酒,你可以每次装不同的酒,但同一时间里面只能装一种酒(不考虑掺着喝哈)。
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/81

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值