zoukankan      html  css  js  c++  java
  • c++引用

    引用的概念:引用就是给内存空间取别名
    一、引用有很多用法
    1.引用可以给变量取别名
    [代码]:
    int a=10;
    int b=20;
    int &p=a; //此时p和a代表同一块内存空间
    cout<<p<<' ';
    p=b; //此时p和b代表同一块内存空间
    cout<<p<<endl;
    system("pause");
    [输出结果]:10 20
    2.引用可以给做函数形参和实参之间的传递,也就是引用传递
    [代码]:
    void Swap(int &a,int &b) //此时相当于给实参变量取别名,直接操控实参变量所代表的内存空间
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    }
    void main()
    {
    int a=10;
    int b=20;
    cout<<a<<" "<<b<<endl;
    Swap(a,b);
    cout<<a<<" "<<b<<endl;
    system("pause");
    }
    [输出结果]:10 20
    20 10
    小结:以往函数常用值传递,在函数执行中需要再开辟形参变量空间,通过实参传给形参进行复制,效率不高,而引用传递直接调用原有变量空间进行操作,效率较高。具体事例要具体分析,如图中交换函数(Swap)如使用值传递,最后交换的不过是形参值,实参值没有改变。所以我们往往采用引用传递或指针传递
    3.函数返回值的引用
    [代码]:
    int & Quote()
    {
    int s=10;
    s++;
    return s;
    }
    void main()
    {
    int a=Quote();
    int *b=&Quote(); //此时临时变量被回收,返回变量内存空间地址,b指向该内存空间
    int &c=Quote(); //同理:此时c是该内存空间的别名
    cout<<a<<" "<<*b<<" "<<c<<endl;
    system("pause");
    }
    [输出结果]:11 11 11
    注意:函数返回值不能是局部变量(如例子里的s)的引用,因为局部变量会被释放,返回引用此时已经找不到原局部变量地址,所以出错。
  • 相关阅读:
    HTML引入文件的绝对路径、相对路径、根目录
    测试脚本中的等待方法:
    MVC、MTV、FBV、CBV、母版和继承:
    多窗口处理周杰伦:
    登录测试函数版:
    登录测试:
    hibernate配置详情1(hibernate.cfg.xml)
    常用数据库连接串与驱动总结
    常用数据库连接串与驱动总结
    常用数据库连接串与驱动总结
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236360.html
Copyright © 2011-2022 走看看