引用

作者: 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