zoukankan      html  css  js  c++  java
  • 研一寒假01_结构体_union共用体_enum枚举

    #--------------------------------结构体---------------------------------------#

    /* 定义结构体并初始化方法一 */
    #include <iostream>

    //外部结构声明,在所有的函数中都可以使用
    struct inflatable //定义新类型inflatable(类型int char 等基本数据类型)
    {
    std::string name; //将name的类型声明为std::string

    char name[20]; //结构中的成员
    float volume;
    double price;
    string str1="haijing"; //临时加的表示在结构中也可以定义string类型的变量,但是一定要让结构定义能够访问名称空间std
    }; //分号勿忘!!

    int main()
    {
    using namespace std;

    inflatable guest = //用inflatable去定义结构变量guest并初始化改结构变量
    {
    "Glorious Gloria", //name value 以逗号分隔!!
    1.88, //volume value 以逗号分隔!!
    29.99 //price value 最后无逗号
    }; //分号勿忘!!

    inflatable pal = //用inflatable去定义结构变量pal并初始化改结构变量
    {
    "Audacious Arthur", //name value 以逗号分隔!!
    3.12, //volume value 以逗号分隔!!
    32.99 //price value 最后无逗号
    }; //分号勿忘!!

    /*可以用赋值预算符(=)将结构赋值给另一个同类型的结构 */
    inflatable choice; //定义空的inflatable类型的结构变量choice
    choice = guest; //直接将已经初始化了的guest数据复制给choice
    cout<<choice.name<<choice.volume<<choice.price; //结构变量的取值方法*****
    }

     

    /* 定义结构体并初始化方法二 */
    #include <iostream>

    int main()
    {
    struct perks
    {
    int key_number;
    char ch[20];
    }mr_smith,ms_jones; //注意分号!! perks为新的结构类型, mr_smith和ms_jones为结构变量
    }

     

    /* 定义结构体数组初始化 */

    #include <iostram>

    struct inflatable //定义新类型inflatable(类型int char 等基本数据类型)
    {
    char name[20]; //结构中的成员
    float volume;
    double price;
    }; //分号勿忘!!

    int main()
    {
    inflatable gifts[100]; //创建包含100个inflatable结构的空数组
    inflatable guest[2] = //创建包含2个inflatable结构的数组并初始化
    {
    {"Bambi",0.5,21.99},
    {"Godzilla",200,565.99}
    }; //勿忘分号!!

    /* 结构体数组的输入输出方法 */
    cin>>gifts[0].vilume<<endl; //给gifts[0]中的volume赋值
    cout<<guest[1].price<<endl; //输出guest[1]的price值 guest[1].price=565.99
    }

     #------------------------------------union共用体----------------------------------------#

    //结构体和共用体的区别:结构体中的结构变量在初始化的时候,必须给结构中的所有成员赋值;而共用体则可以不用,一次只能给一个成员赋值

    #include <iostream>

    union one4call //定义共用体类型one4call
    {
    int int_val;
    long long_val;
    double double_val;
    };

    int main()
    {
    one4call pail; //定义onecall类型的变量pail

    pail.int_val=15;//共用体只能一个一个的给成员赋值,不能一次全部赋值
    cout<<pail.int_val;//输出

    pail.long_val=1.38; //共用体只能一个一个的给成员赋值,不能一次全部赋值
    cout<<pail.long_val; //输出
    }

    /* 共用体的长度为其最大成员的长度,其用途之一就是当数据项使用两种或者更多种格式(但不会同时使用),可节省空间 */
    /* 例如一些商品的id为数字,一些商品的id为字符串,这时就可以用共用体来存储 */
    #include <iostream>

    struct widget
    {
    char brand[20];
    int type;
    union id //定义共用体类型id 在id中有两个成员变量id_num和id_char,只能存储一个,不可同时存储
    {
    long id_num; //数字类型的商品id
    char id_char[100]; //字符串类型的商品id
    } id_val; //定义共用体变量id_val
    }; //分号勿忘!!

    int main()
    {
    widget prize; //定义结构体变量prize

    cout<<""1"表示id为数字类型商品,"2"表示id为字符串类型商品"<<endl; //输出"1"表示id为数字类型商品,"2"表示id为字符串类型商品
    cout<<"请输入:"<<endl;
    cin>>prize.type; //输入商品类型给prize.type

    if(prize.typr==1)
    cout<<"请输入数字编号的商品id"<<endl;
    cin>>prize.id_val.id_num;
    else
    cout<<"请输入字符串编号的商品id"<<endl;
    cin>>prize.id_val.id_num;
    }

    //匿名共用体就是将上面的所有id_val给省略掉,包括引用的时候,即prize.id_val.id_num直接写成prize.id_num即可

     #----------------------------enum枚举--------------------------------------#

    #include <iostream>

    int main()
    {
    enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet}
    spectrum band; //使用新类型spectrum创建枚举变量band
    //将spectrum称为枚举,将red,orange,yellow,green,blue,violet,indigo,ultraviolet称为枚举量,其中red=0,orange=1,yellow=2,green=3以此类推

    /* 只能使用枚举量给枚举变量赋值,用其余的值给枚举变量赋值时不对的 */
    band=red; //有效
    band=2000; //无效
    band=red+green; //无效,因为没有为枚举定义算数运算
    band=spectrum(20); //有效,20不是枚举值,但20在取值范围之内,取值范围的上下限见c++97页

    /* 可以人为的设置枚举量的值 */
    enum spec{first,second=100,third}; //first默认为0,second=100,后面没有被初始化的值将会比前面的枚举量大1,即third=101
    }

    //实际上,枚举常用来定义相关的符号常量,而不是创建新类型,可以用来替代const

     

    2019.02.15 最后编辑于16:15  haijing in hz miss my family

     

     

     

     

     

     

     

     

  • 相关阅读:
    查看文件夹内各文件数目
    Resnet论文翻译
    查看keras自动给文件夹标号
    文件夹内自动图片遍历
    将wiki人脸数据集的性别信息提取出来制作标签
    将wiki人脸数据集中的图片按男女分类
    IPFS私有网络集群搭建
    带参数的函数增加装饰器
    【IPFS + 区块链 系列】 入门篇 — IPFS环境配置
    程序员那些事儿:技术骨干的烦恼
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/10458503.html
Copyright © 2011-2022 走看看