1.引用是个别名,建立时必须利用另一个数据对象(如一个变量)的名字进行初始化,姨制定该引用所代表的数据对象;系统不会再给引用分配储存空间。引用指向变量的地址
int i;
int & r =i; // 此时引用r的存储空间的地址就是i的地址
2.引用的规则:
-
创建引用时时,必须立即对其进行初始化,(指针则可以在任何时候被初始化)
int& r; //error No initilalization;
int i;
int & r =i; //correct
-
一旦一个引用被初始化为一个对象的引用,他就不能被改变为另一个对象的引用(指针可以在任何时候改变为指向为另一个对象),但一个对象可以有多个引用
int i;
int& r = i;
int& t = i; //correct
int i,j;
int& r =i;
int& r =j; //errror
-
不能有NULL引用,必须确保引用是对具体合法对象的引用(及引用适合一块合法的存储空间关联)
3.引用运算符与地址操作符使用相同的符号(及运算符重载),但含义不一样,它放在类型名后面; int& r =i;
4.引用的一个重要作用就是作为函数的额参数。如果有占用空间大的对象(利于一个大的结构对象或类结构)需要作为函数的参数传递的时候,在C中往往使用指针,因为可以避免整个实参对象数据全部复制给形参,可以提高程序的运行效率,而在C++中既可以使用指针也可以使用引用,引用作为参数的最大好处就是既可以像指针那样工作也,其使用方式又和一般变量相同。也就说引用具有更佳的可读性。
#include<iostream>
using namespace std;
void fun(int& a)
{
a = 12;
//cout << a << endl;
}
void fun1(int* p )
{
*p = 15;
//cout << a << endl;
}
//
int main()
{
int i = 3;
fun(i);
cout << i << endl; //result 12
fun1(&i);
cout << i << endl; //result 15
system("pause");
return 0;
}