1. 引用的本质: 是一个指针常量
int& ref 等价于 int* const p
2. 引用的注意事项:
(1)必须初始化
(2)一旦被赋值,不可以再更改指向
代码实现:
#include<iostream>
using namespace std;
int main() {
//引用的本质
//引用的不呢之就是指针常量
//指针常量int* const p
int a = 10;
cout << a << endl;
int& ref = a;
//等价于
int* const p = &a;
cout << ref << endl;
cout << *p << endl;
//指针代表的地址不能变,地址存放的数据可以改变
ref = 20;
//等价于
*p = 20;
cout << ref << endl;
cout << a << endl;
cout << *p << endl;
system("pause");
return 0;
}
原理:
3. 常量引用:定义形参防止误操作,和常量指针一样,不可以通过引用更改原值,之可以通过原值更改引用。
合法操作:
//合法
int a = 10;
int& ref = a;
不合法操作:
合法操作:
//合法
const int& ref = 10;
等价于:int temp = 10; int& ref = temp;
但是需要注意:不可以对ref再进行赋值了,因为ref已经是一个不可修改的10了。
同理,在函数中,引用作为形参,也会出现类似的问题:
#include<iostream>
using namespace std;
//常量引用
void show(int& ref) {
//假如再对ref进行赋值,a和ref就都是10了
ref = 10;
cout << ref << endl;
}
int main() {
int a = 100;
show(a);
system("pause");
return 0;
}
因此修改为:
#include<iostream>
using namespace std;
//常量引用
void show(const int& ref) {
cout << ref << endl;
}
int main() {
int a = 100;
show(a);
system("pause");
return 0;
}
不可以通过引用对原始值进行修改: