struct 和union的区别

来源:互联网 发布:建筑工程量计算软件 编辑:程序博客网 时间:2024/04/29 07:48
C/C++的数据类型包括基本数据类型和非基本数据类型,基本数据类型就是整型、实型等,非基本数据类型也称为构造数据类型,包括数组类型、结构体类型和共用体类型。其中结构体类型和共用体类型分别通过关键字struct和union来声明或定义。

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

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

structletuknowit
{
    char c;
    int a;
    float f;
    double dbl;
};
unionletuknowit
{
    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

原创粉丝点击