美文网首页
C++ 引用

C++ 引用

作者: 付凯强 | 来源:发表于2022-07-04 13:40 被阅读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

    相关文章

      网友评论

          本文标题:C++ 引用

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