1引用的定义
引用时C++对C的一个重要的扩充,引用的作用是给变量起一个别名。
例如:
int a;
int &b=a;//声明b是a的引用
经过以上的声明,b就成为了a的别名,a和b的地位以及作用都是一样的。
将b声明为a的引用,不需要再为b开辟新的单元,b和a在内存中占同一存储单元,它们具有相同的地址。
在程序中,
声明了b是a的引用,然后输出b=10;
然后使a的值减小5,再输出b=5,说明b会随着a的变化做出变化;
然后使b的值减小1,再输出a=4,说明a会随着b的变化做出变化。
在声明一个引用的同时,必须同时对它进行初始化,即声明它代表哪一个变量。在声明变量b是变量a的引用后,就可以将b作为a的别名来进行操作,并且b不能再作为其他变量的引用(别名)。
声明引用,而不进行初始化操作:
已经申明p为a的引用之后,在声明p为b的引用
注意区分:
int &b=a;表示b是a的引用
int *b=&a;表示b是指针变量,并且b的值是a的地址
引用不是一种独立的数据类型,必须指定其代表的某一类实体(如变量,类对象),不能定义引用数组,不能定义指向引用的指针,也不能定义指针的引用。
2 引用作为函数的参数
C++增加引用机制,主要是把它作为函数参数,以扩充函数传递数据的功能。
函数的参数传递有三种情况
将变量名作为形参和实参
这是传给形参的是变量的值,传递是单向的。如果在执行被调用函数期间,形参的值发生变化,是不能反映到实参的。因为形参只是复制了实参的数值,两变量并不是占用同一存储单元。
将变量地址作为实参,指针作为形参
这种方式仍然是值传递的方式,不过他传递的不是变量的数值,而是变量的地址。因此可以在被调用函数中,通过调用指针指向的变量来改变相应变量的值。
因为是值传递,所以只改变指针的值,而不去改变指向的变量的值,还是不能改变相应的变量的值。
将变量名作为实参,引用作为形参
将变量名作为形参和实参和将变量地址作为实参,指针作为形参都是采用的值传递的方式。而引用作为形参的时候,采用的是地址传递的方式。
在函数change的形参中声明了a,b是整形变量的引用。当main函数调用change函数时,把实参i的地址传递给形参x,把实参j的地址