zoukankan      html  css  js  c++  java
  • 研一寒假04_static&组合类型

    #--------------------------------static&组合类型----------------------------------#

    /* c++管理数据内存方式 */

    //自动存储:在函数内部定义的常规变量使用中断存储空间,称为自动变量(存储在栈中),意味着他们在所属的函数被调用时自动产生,在函数结束时消亡(内存自动释放)
    //静态存储:在函数外面定义或者是使用关键字static定义的变量,在整个程序执行期间都存在,例如:static double fee=56.50;
    //动态存储:使用new创建和使用delete释放内存的变量,new和delete管理一个内存池,这个内存池有别于用于静态存储和自动存储的内存,数据的生命周期不完全受函数的生存或程序控制,程序员有更大的控制权

    //内存泄漏:使用new分配内存之后,没有使用delete释放内存


    /* 组合类型 */
    #include <iostream>

    //新建一个结构
    struct inflatable
    {
    int year;
    int month;
    };

    //主函数
    int main()
    {
    //使用新类型定义结构
    inflatable s01,s02,s03; //使用类型inflatable创建结构变量s01,s02,s03
    s01.year = 1998; //给s01中的成员year赋值

    //定义指向结构的指针
    inflatable* pa = &s02; //创建指向结构变量s02的指针pa,所以*pa就是一个结构变量,所以(*pa).year=1999这样赋值也是可以得
    pa->year = 1999; //给结构变量s02中的year赋值,(*pa).year=1999也是可以得 (*pa).month=12

    //定义结构数组
    inflatable trio[3]; //创建包含三个结构的结构数组,其中trio是一个数组,而trio[0]是一个结构,trio[0].year就是该结构中的一个成员
    trio[0].year=2003; //给结构trio[0]中的成员year赋值
    (trio+1)->year=2008; //由于数组名是数组内第一个元素的地址,所以数组名也是一个指针,因此也可以使用简介成员运算符"->"
    //等价于 trio[1].year=2008;

    std::cout<<trio->year<<std::endl; //也就是std::cout<<(trio+0)->year<<std::endl; 打印2003
    //等价于std::cout<<trio[0].year<<std::endl; 打印2003
    //创建指针数组
    const inflatable* arp[3]={&s01,&s02,&s03}; //arp是一个指针数组,arp[1]就是一个指针,因此可以使用使用间接成员运算符来访问成员
    std::cout<<arp[1]->year<<std::endl; //打印1999 注意arp[1]是数组中的第二个元素!!

    //创建指向指针数组的指针
    const inflatable** ppa = arp; //arp是一个数组的名称,也是数组内第一个元素的地址,但数组内第一个元素为指针,所以ppa是一个指针,
    //由于arp是一个(指向结构指针)的指针,那么*ppa就是一个结构指针,可以使用间接成员运算符访问其成员
    //类似于int a=5; int* pw=&a; //pw是一个(指向a)的指针,那么*pw就是a ¥¥¥¥¥
    //且等价于 auto ppa = arp; //在c++11中编译器知道arp的类型,能正确推断出ppa的类型
    std::cout<<(*ppa)->year<<std::endl; //ppa=&s01 打印1998
    std::cout<<(*ppa+1)->year<<std::endl; //ppa+1=&s02 打印1999

    return 0;
    }


    最后编辑于 2019.02..19 17:02 家

  • 相关阅读:
    Leetcode 剑指 Offer 27(二叉树的镜像)
    Leetcode 1022从根到叶的二进制之和
    Leetcode 993二叉树的堂兄弟节点
    Leetcode 965单值二叉树
    Leetcode 938 二叉搜索树的范围和
    hdu 2082 找单词
    母函数模板
    hdu 1398 Square Coins
    hdu 1085 Holding Bin-Laden Captive!
    hdu 1028 Ignatius and the Princess III
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/10458543.html
Copyright © 2011-2022 走看看