引用

作者: BlinKer | 来源:发表于2017-11-04 16:27 被阅读0次

    0x00 引用的语法

    • 引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

    引用的声明方法:类型标识符 &引用名=目标变量名;

    • 与指针不同,引用的对象不能被改变,且必须在声明时即被初始化。

    • 如下:定义引用ra,它是变量a的引用,即别名。

    int a;
    int& ra = a;
    
    • 引用与另外声明一个变量的区别在于,引用没有另外开辟存储空间:
    int num = 2;
        int* pointer = #
        int& quote = num;
        int num2 = num;
    
        cout << &num << endl << pointer << endl << &quote << endl << &num2 << endl;
    

    输出结果如下:

    image.png

    0x01 将引用作为函数参数

    将引用作为函数参数类似指针传参,可以改变参数的实际值:

    int re(int& t, int& arc)
    {
        int temp;
        temp = t;
        t = arc;
        arc = temp;
    
        return 0;
    }
    
        int add1 = 100;
        int add2 = 200;
    
        re(add1, add2);
        cout << add1 << endl << add2 << endl;
    

    输出结果如下:

    image.png

    0x02 返回值为引用类型的函数

    • 返回值为引用类型的函数的一个特点是可以作为表达式的左值
    int test2 = 1;
    
    int& re(int& t, int arc)
    {
        t = arc + 1;
    
        return t;
    }
    
        re(test2, 1) = 3;
        cout << re(test2, 1) << endl<< test2 <<endl;
    

    输出结果如下:

    image.png
    • 可以注意到,由于test2作为re()函数的返回值,在调用re()函数作为表达式左值的那一行之后,无论函数内计算结果如何(本例中为2),它的值仍会被赋值改变了(本例中为3)。这是因为返回值为引用类型的函数所返回的是一个隐式指针

    相关文章

      网友评论

          本文标题:引用

          本文链接:https://www.haomeiwen.com/subject/klafmxtx.html