zoukankan      html  css  js  c++  java
  • C++复合类型(结构,共用体,枚举)

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

      一.关键字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不是枚举变量的值。

        

    tianjiale菜鸟名企梦
  • 相关阅读:
    c++中static的使用
    sublime3 ctl+b无效
    Maximum Subarray
    Find the Duplicate Number
    Reverse Linked List
    c++ primer 2 变量和基本类型
    Single Number II
    Roman to Integer & Integer to Roman
    Search Insert Position
    Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/tianjiale/p/9951646.html
Copyright © 2011-2022 走看看