c++-基础知识-引用
引用的概念:
引用就是变量的别名,因此引用又称为别名,对一个变量的引用的操作,实际上都是对原来的变量的操作。
int a;
int &b = a;
声明b是a的引用,&是引用声明符,不代表地址。对变量a声明引用并不会另开辟内存单元,b和a代表同一变量单元。
1.在声明一个引用时,必须同时使其初始化,即声明它代表哪一个变量。
2.引用并不是一种独立的数据类型,必须与某一种类型的数据相联系。
3.对引用的初始化,可以使用一个变量名,也可以用另一个引用。
int a=3; int &b = a; int &c = b; 合法的,a有两个别名:b,c
4.引用在初始化后,不能再 被重新声明为另一变量的别名
int a=4,b=4; int &c = a; int &c=b; 错误
将引用作为函数参数
这是其主要作用之一,以扩充函数传递数据的功能。
在c语言中,传递函数参数主要有两种情况
1.将变量名作为实参。传给形参的是变量的值,传递是单向的,也就是函数内部形参的变量并不会传回实参。因为并不是同一个存储单元。
2.传递变量的指针,传递变量的地址,使得形参得到变量的地址,这是形参指针指向实参变量单元,传递就是双向的。
c++:利用传递变量的别名作为函数形参。
因此,总结,c++调用函数时有两种传递数据的方式,一种是常用的方法:将实参的值传送给形参,也就是形参是实参的一个copy,这种称为传值方式调用。另一种是将实参的地址传给引用型形参,称为引用方式调用。
引用的一些关键点:
1.不能建立void型的引用:void &a = 9; 错误
2.不能建立引用的数组 char c[6]="hello", char &rc[6]=c; 错误
3.可用const对引用加以限定,不允许改变该引用的值:int i = 5; const int &a=i; a=3;错误
但是它不阻止改变引用所代表的变量的值,也就是可以对i改变其值
4.可以用常量或者表达式对引用进行初始化,但必须用const声明:int i=5; const &a=i+3;表明不能改变该引用的值,因为已经是常量了。
对象的常引用
常引用多用做函数参数,这样在函数中就不能改变该参数的值,同时在调用函数时又不必建立实参的copy。
posted on 2018-01-01 20:02 sichenzhao 阅读(166) 评论(0) 编辑 收藏 举报