引用变量:
C++中创建引用变量主要用途是作为函数的形参,通过将引用变量用作形参,函数将使用原始数据,而不是其副本。
引用是如何工作的?
C++使用&来声明引用,例如将rodents作为rats变量的别名,可以这样做:
int rats;
int &rodents = rats;
注意:这里的&不是取地址符,而是类型标识符的一部分,int& 表示指向的是指向int的引用。上述rat和rodents可以互换,他们指向相同的值和内存单元。下述程序表明了这一点:
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
int main()
{
using namespace std;
int rats = 101;
int& rodents = rats;
cout << "rats= " << rats;
cout << ", rodents = " << rodents << endl;
rodents++;
cout << "rats = " << rats;
cout << ", rodents = " << rodents << endl;
cout << "rats address = " << &rats;
cout << ",rodents address = " << &rodents << endl;
return 0;
}
程序的运行的结果为:
rats= 101, rodents = 101
rats = 102, rodents = 102
rats address = 007BFC74,rodents address = 007BFC74
注意程序中的&不是取地址符,而是表示指向int变量的引用:
int& rodents = rats;
但是下面的&表示取地址符:
cout<<", rodents address = "<<&rodents<<endl;
从程序的输出可以得出操作变量的引用就是操作了变量的本身。 引用和指针看起来很像,但需要注意的是声明引用时必须将其进行初始化,而不能想指针那样先声明再引用,如:
int rat;
int& rodent;
rodent = rat;//这样的表示方法是错误的,必须在声明引用变量时进行初始化。
就是说,引用更接近const指针,必须在创建时进行初始化,一旦与某个变量关联起来,就必须一直效忠于它实际上 int & rodents = rats;
等价于int* const pr =& rats;
其中,引用rodents扮演的角色与表达式*pr相同。