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)的引用,因为局部变量会被释放,返回引用此时已经找不到原局部变量地址,所以出错。
  • 相关阅读:
    Linux 重新挂载分区的方法
    SQL复习三(子查询)
    SQL复习四(完整性约束)
    SQL 复习二(数据查询语言)
    SQL复习一(基础知识)
    在windos 环境下安装
    tt程序分析(一)
    单例模式Singleton
    用命令行使用soot反编译生成jimple
    在win10环境下安装eclipse mars版本
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236360.html
Copyright © 2011-2022 走看看