美文网首页
c++ 引用

c++ 引用

作者: 杀破魂 | 来源:发表于2020-01-23 21:32 被阅读0次

    概念

    c++中,变量的引用就是变量的别名,因此引用(reference)又成为别名(alias)。

    变量的引用

    int &b=a;声明了b是a的引用,即a的别名。
    在上述声明中,&是引用声明符,此时不代表地址。对变量声明一个引用,并不另开辟内存空间单元,b和a都代表同一个变量单元。在声明一个引用时,必须同时使之初始化,即声明代表哪一个变量。

    • 引用不是一种独立的数据类型,它必须与某一种类型的数据先联系。声明引用必须对它初始化。
    • 引用与其所代表的变量共享同一内存单元,系统并不为引用另外分配存储空间。编译系统使引用和其所代表的变量具有相同的地址。
    • 对引用的初始化,可以用一个变量名,也可以用另一个引用
    int a=3;
    int &b=a;
    int &c=b;
    
    • 引用初始化后不能再被重新声明为另一变量的别名。
    int a=3,b=4;
    int &c=a;
    c=&b;//错误,改变c成为整形变量b的别名
    int &c=b;//错误,重新声明c成为整形变量b的别名
    

    将引用作为函数的参数

    c++调用函数时有两种传递数据的方式,一种是常用的方法:将实参的值传送给形参,形参是实参的一个拷贝,这个中方式成为传值方式调用;另一种是将实参的地址传给引用型形参,这时形参与实参是同一个变量,这种方式成为引用方式调用。

    引用注意点

    • void类型不能建立引用
      void &a=10;
    • 不能建立引用的数组
    char c[6]="hello";
    char &rc[6]=c;//错误
    
    • 可以将变量的引用地址赋给一个指针,此时指针指向的是原来的变量
    int a=3;
    int &b=a;
    int *p=&b;
    //相当于p指向变量a
    int *p=&a;
    
    • 可以建立指针变量的引用
    int i=5;
    int *p=&i;
    int * &pt=p;//pt是一个指向整形变量的指针变量的引用,初始化为p
    
    • 可以用const对引用加以限定,不允许改变该引用的值
    int i=5;
    const int &a=i;
    a=3;//改变引用a的值,错误
    i=3;//合法,不阻止改变引用所代表变量的值
    
    • 可以用常量或表达式对引用进行初始化,但此时必须用const作声明
    int i=5;
    const &a=i+3;//合法
    

    相关文章

      网友评论

          本文标题:c++ 引用

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