zoukankan      html  css  js  c++  java
  • c++对c的扩展----引用类型

    变量是一个内存的别名,程序通过变量名使用内存空间,当然一个内存空间可以起多个别名么?

    答案:可以,这就是c++中引用的由来,引用就是给变量起别名

    引用是c++的概念!!!况且声明引用的符号&十分像是取地址操作

    #include<iostream>
    #include<string>
    using namespace std;
    
    void main()
    {
        string name = "徐晓冬";
        string &name2 = name;//name2就是对name的引用
        name2 = "陈培昌";
        cout << "我是" << name << endl;
        cout << "哟~原来是老弟你" << endl;
        system("pause");
    }

    当然引用在定义的时候必须要初始化

    用途:交换数值

    #include<iostream>
    #include<string>
    using namespace std;
    
    void swapnum(int a,int b)
    {
        //int a = 2,
        int c = 0;
        //int b = 3;
        c = a;
        a = b;
        b = c;
    }
    
    void canswap(int &a,int &b)
    {
        int c = a;
        a = b;
        b = c;
    }
    
    void needleswap(int *a, int*b)
    {
        int c = *a;
        *a = *b;
        *b = c;
    }
    
    void main()
    {
        int a = 20;
        int b = 30;
        //needleswap(&a, &b);
        canswap(a,b);
        cout << "a:" << a << "b:" << b << endl;
        system("pause");
    }

    输出结果:

    •  引用的本质:其实和指针有异曲同工之妙
    #include"iostream"
    #include<string>
    using namespace std;
    struct mycoach
    {
        string name;
        string &hiscoachname;
        int &age;
    };
    
    
    
    void main()
    {
        
        string coach = "徐晓冬";
        printf("struct实例地址是%d
    ", sizeof(coach));
        printf("struct实例地址是%d
    ", sizeof(mycoach));
        system("pause");
    }

    •  引用作为函数的返回值
    #include"iostream"
    #include<string>
    using namespace std;
    
    int& getnum()
    {
        int a = 10;
        
        return a;
    }
    
    void main()
    {
        
        int &b = getnum();//返回内存空间,命名为b,函数运行完空间被释放掉,一些版本的编译器可能导致乱码,栈变量不能作为初始化返回值,可能带来问题!而静态变量和全局变量无此问题
        int c = getnum();//返回变量本身,副本
        printf("b的值是%d
    ",b);
        printf("c的值是%d
    ",c);
        system("pause");
    }

    输出结果:基于vs2013

    • 左值----函数在操作的左边---即给函数赋值
    #include"iostream"
    #include<string>
    using namespace std;
    
    int& getnum()
    {
        static int a = 10;
        a++;
        return a;
    }
    
    
    void main()
    {
        
        getnum() = 60;//这样一来,a的值由10变成了60
        int &c = getnum();
        printf("a的值是%d
    ", c);
        getnum() = 100;
        int &b=getnum();
        printf("a的值是%d
    ",b);
        system("pause");
    }

    输出结果:

  • 相关阅读:
    2018-2019-2 20165313 《网络对抗技术》Exp4 恶意代码分析
    2018-2019-2 20165313 Exp3 免杀原理与实践
    2018-2019-2 20165313 Exp2 后门原理与实践
    linux安装firmware-mod-kit
    暑假BUUCTF抄题记录
    手动编译Aseprite v1.2.21
    GameMaker Studio2 疑难杂症
    20181218 实验四《Python程序设计》实验报告
    20181218 实验三《Python程序设计》实验报告
    Mysql各种问题
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/11937235.html
Copyright © 2011-2022 走看看