C++ 引用

2022-07-04  本文已影响0人  付凯强

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

引用和指针的不同

  1. 不存在空引用。引用必须连接到一块合法的内存。
  2. 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  3. 引用必须在创建时被初始化。指针可以在任何时间被初始化。

创建引用

试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。因此,您可以通过原始变量名称或引用来访问变量的内容。例如:

    int i = 10;
    int& y = i;
    printf("i  = %d ",y);

& 读作引用,第二行读作 "y 是一个初始化为 i 的整型引用"。

引用作为参数

    int a = 1;
    int b = 2;
    swap(b,a);
    printf("swap a = %d ",a);
    printf("swap b = %d ",b);

    int& aa = a;
    int& bb = b;
    swapQuote(bb,aa);
    printf("swapQuote a = %d ",a);
    printf("swapQuote b = %d ",b);
void swap(int a ,int b) {
    int temp;
    temp = a;
    a = b;
    b = temp;
}

void swapQuote(int& a, int& b) {
    int temp;
    temp = a;
    a = b;
    b = temp;
}
swap a = 1 swap b = 2 swapQuote a = 2 swapQuote b = 1

swap并不能发生值交换的原因是swap方法操作的是形参,而swapQuote方法操作的是实参。普通的形参只是对实参的值进行了复制,也就是形参不会改实参的值。

引用作为返回值

int& add(int a,int b) {
    int sum = (a +b);
    static int& s = sum;
    return s;
}

当返回一个引用时,要注意被引用的对象不能超出作用域。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。

参考

https://www.runoob.com/cplusplus/returning-values-by-reference.html

上一篇下一篇

猜你喜欢

热点阅读