引用的基本使用
作用:给变量起别名
语法:数据类型 &别名 = 原名
示例:
#include <iostream>
using namespace std;
int main() {
int a = 10;
//创建引用
int& b = a;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
b = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");
return 0;
}
运行结果
引用的注意事项
1.引用必须初始化
2.引用在初始化之后就不能再改变
int &b;//是错误的 必须要初始化
int a = 10;
int &b = a;
int c = 20;
int &b = c;//是错误的 初始化后不可改变
b = c;//也只是赋值操作
引用做函数参数
作用:函数传递参数时可以利用引用的技术让形参修饰实参
有点:可以简化指针修改实参
示例:
#include <iostream>
using namespace std;
//交换函数
//引用传递
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = 10;
int b = 20;
swap(a, b);
cout << "a = " << a<<endl;//引用传递,形参会修饰实参
cout << "b = " << b<<endl;
system("pause");
return 0;
}
运行结果
引用做函数的返回值
作用:引用是可以作为函数返回值存在的
注意:不要返回局部变量的引用
用法:函数调用可以作为左值
示例:
#include <iostream>
using namespace std;
//引用做函数的返回值
int& test01() {
int a = 10; //局部变量在栈区
return a;
}
int& test02() {
static int a = 10; //静态变量在全局区
return a;
}
int main() {
int& ref = test01();
cout << ref << endl;//第一次是因为编译器做了保留
cout << ref << endl;
int& ref2 = test02();
cout << ref2 << endl;
cout << ref2 << endl;
test02() = 1000;//如果函数的返回值是引用,这个函数调用可以作为左值
cout << ref2 << endl;
cout << ref2 << endl;
system("pause");
return 0;
}
运行结果:
引用的本质
本质:==引用在c++内部实现是一个指针常量
示例:
常量引用
作用:常量引用主要用来修饰形参,防止形参改变实参
在函数形参列表中,可以加const修饰形参防止形参改变实参
示例:
#include <iostream>
using namespace std;
//常量引用
//使用场景:用来修饰形参 防止误操作
//打印数据函数
void showValue(const int &val) {//加入const之后就不能对val再进行修改
cout << "val = " << val << endl;
}
int& test01() {
int a = 10;
return a;
}
int main() {
//int a = 10;
//int& ref = a;//引用必须引一块合法的内存空间
//const int& ref2 = 10;//加上const之后 编译器将代码修改 int temp = 20; const int &ref2 = temp;
int a = 100;
showValue(a);
system("pause");
return 0;
}