zoukankan      html  css  js  c++  java
  • C++ 变量的引用 &

    创建变量的引用:int &a = b;  

    引用变量a是变量b的别名;对引用操作和对变量本身操作完全相同

    注意:与typedef的区别:

    typedef对数据类型起别名,&对变量起别名

    比如:int num=100;

    对int起别名用typedef

    对num起别名,用&

    注意:引用必须在定义时同时初始化,初始化后绑定的变量不能修改

     

    int a = 100;
        const int& b = a;//常引用
        //int const & b=a;    与上面等价
        //不能通过常引用b来修改变量值
    
        //b = 50;  错
        a = 50;
    
        //普通引用只能用作左值;常引用也叫万能引用,左值右值都可以
        //int& i = 111;   普通引用--错
        const int& i = 111;
        int a[3] = { 10,20,30 };
        int(&aa)[3] = a;//数组的引用
    #include <iostream>
    using namespace std;
    
    int add(int a, int b) {
        return a + b;
    }
    
    
    int main()
    {
        
        int(&f)(int, int) = add;//函数的引用
        int x = f(10, 20);
        cout << x << endl;
            return 0;
        
    }

    主要用途一:用作函数的形参,通过将引用变量用作参数,函数将使用原始数据而不是其拷贝

    void swip(int &a, int &b)  //a是i的引用,a和i的数据地址相同;b是j的引用,b和j的数据地址相同
    {
        int s;
        s = a;
        a = b;
        b = s;
    }
    
    int main()
    {
        int i = 100;
        int j = 10;
        swip(i, j);//ab数据交换后,ij的数据也就交换了
        cout << "i="<<i << endl;
        cout << "j=" << j << endl;
            
    }

    用途二: 返回值引用

    #include <iostream>
    using namespace std;
    
    struct A {
        int data;
        int& func(void) {
            return data;  //返回变量data的引用
            //返回值变成了左值
        }
    };
    
    int main()
    {
        
        A a = { 105 };
        cout << a.data << endl;
        a.func() = 200;
        //a.func()是a.data的引用,a.func()是a.data的别名
        //所以这句是修改a.data的值
        cout << a.data << endl;
            return 0;
        
    }

     引用的本质就是指针

  • 相关阅读:
    Redmine-java-api使用
    Junit4 基于 custom Rule retry
    Extentreports在安卓中的应用
    uiautomator 2.0 自定义testrunner使用
    uiautomator 启动原理
    uiautomator 自定义注解的应用
    uiautomator 原理 (UiAutomation、UiAutomatorBridge、QueryController)
    uiautomator 自定义testrunner使用和启动原理
    HeadFirstPython-文件与异常
    HeadFirstPython-初识python
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10528647.html
Copyright © 2011-2022 走看看