美文网首页
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