引用:已定义的变量的别名(另一个名称)
eg:有一个人叫张三,外号叫做张胖子,而张胖子就是我们所说的引用。
上面所说的张三还是张胖子,他都是同一个人。所以我们引用也是一样的,只是名称不同,但它是同一个变量。
引用变量的主要用途是用作函数的形参,通过将引用变量作为参数,函数将使用原始数据,而不是其副本,这样除指针之外,引用也可以为函数处理大型结构提供一种方便的途径。
创建引用变量(使用&符号)
&符号有两种用途:
1、变量的地址。
2、声明引用。
eg:
int a;
int & b = a;
这里&不是地址运算符,而是类型标识符的一部分,int&指的是指向int的引用。
注意:上述声明允许将a和b互换——它们指向相同的值和内存单元。
程序例子:创建引用变量,看他们的值和地址是否相同,改动引用变量的值的变化
#include <iostream>
using namespace std;
int main(void)
{
int rats = 10;
int & rodents = rats; //创建引用变量
//打印两个变量的值是否一样
cout << "rats = " << rats;
cout << ", rodents = " << rodents << endl;
//改变rodents的值,rats的值是否该改变
rodents++;
cout << "rats = " << rats;
cout << ", rodents = " << rodents << endl;
//打印两个变量的地址是否一样
cout << "rats address = " << &rats << endl; //这里的&rats是取出rats的地址;
cout << "rodents address = " << &rodents << endl; //这里的&rodents是取出rodents的地址;
return 0;
}
运行结果:
rats = 10, rodents = 10
rats = 11, rodents = 11
rats address = 0xa8fd98
rodents address = 0xa8fd98
--------------------------------
Process exited after 0.3489 seconds with return value 0
请按任意键继续. . .
上面的程序例子可以说明,引用变量rodents和rats是同一个值,rodents的值改变,rats的值也会改变,而且rats和rodents的地址是同一个地址。
引用和指针有什么区别呢?
eg:
int rats =10;
int & rodents = rats;
int * pt = &rats;
表达式rodents和*pt都可以同rats互换,表达式&rodents和pt都可以同rats互换。
其中区别就是必须在声明引用时将其初始化,而不能像指针那样,先声明再赋值。
注意:必须在声明引用变量时进行初始化。说起来引用更接近const指针,必须在创建时进行初始化,一旦与某个变量关联起来,就将一直效忠于它。