C++:引用的简单理解
一、什么是引用
引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价
语法:类型 &引用名=目标变量名;
C++ 引用 vs 指针
引用很容易与指针混淆,它们之间有三个主要的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
创建引用
#include <iostream>
using namespace std;
int main ()
{
// 声明简单的变量
int i;
double d;
// 声明引用变量
int& r = i; //可以读作:r 是一个初始化为 i 的 int 型引用
double& s = d; //可以读作:s 是一个初始化为 d 的 double 型引用
i = 5;
cout << "Value of i : " << i << endl;
cout << "Value of i reference : " << r << endl;
d = 11.7;
cout << "Value of d : " << d << endl;
cout << "Value of d reference : " << s << endl;
return 0;
}
上面代码编译执行后得到的结果:
Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7
C++引用几个需要注意的点
1.引用必须在声明时将其初始化,不能先声明后赋值
int main()
{
int rats = 10;
//声明引用,旦未初始化
int &rodents;
rodents = rats;
return 0;
}
上述代码编译时会报以下错误:
error: ‘rodents’ declared as reference but not initialized
2.引用更接近const指针,必须在创建时进行初始化,一旦引用和某个变量关联起来,该引用就会一直指向该变量。
C++引用的应用
- 把引用作为参数
( C++提供了 传递变量的引用。形参是引用变量,和实参是一个变量,调用函数时,形参(引用变量)指向实参变量单元。这种通过形参引用可以改变实参的值。)
两个printf的结果都是10。
总结:
B 引用 A:相当于 B 借用了 A 的内存地址和值,A 和 B 任意一个发生改变的话 AB 同时改变。
指针 B 指向 A:B 借用了 A 的值,但是B的内存地址重新分配,不同于 A。