首页 > 编程语言 > 详细

C++复合类型(结构,共用体,枚举)

时间:2018-11-13 14:01:20      阅读:167      评论:0      收藏:0      [点我收藏+]

?结构是用户定义的类型,而结构的声明定义了这种类型的数据属性。

  一.关键字struct声明:   定义了一种新类型

    struct inflatable{

      char name[20];//结构成员

      float volume;//结构成员

      double price;//结构成员

    } 

  定义结构之后,便可以创建这种类型的变量。如  inflatable a; inflatable b;inflatable c;由于a的类型为inflatable,因此可以使用成员运算符(.),即a.volume (访问类成员,直接用.)

         结构数组:

    inflatable结构包含一个数组,

       E  G:inflatable gifts[100];//若创建包含100个inflatable结构的数组.

          cin>>gift[0].volume;

    初始化:

       inflatable guests[2]={

          {"LELE",0.5,21.99},

          {"HAHA",2000,565.99}

       };

    二.共用体

    共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。结构可以同时存储int long double,共用体只能存储int,long,double。共用体的句法和结构相似,但含义不同。 one4all是创建的类型

    声明:  union one4all{ 

          int int_val;

          long long_val;

          double double_val;

         }

    可以使用one4all变量来存储int ,long 或double,条件是在不同的时间进行:

    one4all pail;

    pail.int_val=15;

    cout<<pail.int_val;

    pail.double_val=1.38

    cout<<pail.double_val;

    pail有时可以是int变量,有时可以是double变量。成员名称标识了变量的容量。由于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。

    共用体用途之一:当数据项不用同时使用两种或者更多的时候,可节省空间。假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些的ID为字符串。

struct widget{
        char brand[20];
        int type;
        union id{
            long id_num;
            char id_char[20];
        }name;
    };
    widget prize;
    if(prize.type==1){
        cin>>prize.name.id_num;
    }else
        cin>>prize.name.id_char;

 

    匿名共用体:没有名称,其成员将成为位于相同地址处的变量。

  struct widget{
        char brand[20];
        int type;
        union {
            long id_num;
            char id_char[20];
        };
    };
    widget prize;
    if(prize.type==1){
        cin>>prize.id_num
    }else
        cin>>prize.id_char;

 

    三.枚举 创建符号常量,可代替const,允许定义新类型。

    enum eg{red,orange,yellow,green,blue,violet,indigo};

    ?让eg成为新类型的名称:eg被成为枚举,就如struct变量被称为就够一样。

    ?将red,orange,yellow等作为符号常量,对应值为0~6,这些常量被成为枚举量。

    也可以用枚举名来声明这种类型的变量

    eg band;

    band=blue;

    band=2000;//错误的,2000不是枚举数,2000不是枚举变量的值。

    

 

C++复合类型(结构,共用体,枚举)

原文:https://www.cnblogs.com/tianjiale/p/9951646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!