一、引用的基本概念
引用的使用方式:&别名 = 原名
使用引用修改数据等同于用原名修改,数据都会发生改变。
注意:
1.引用必须初始化
int &b; 这是错误的
2.引用初始化之后就不能改变
二、引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参。
优点:可以简化指针修改实参。
#include "iostream"
using namespace std;
void mySwap01 (int a, int b)
{
int temp =a ;
a = b;
b = temp;
}
void mySwap02(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void mySwap03(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
mySwap01(a,b);
cout << a <<endl << b<<endl;
//值传递形参不会修饰实参
mySwap02(&a,&b);
cout << a <<endl << b<<endl;
//地址传递形参会修饰实参
mySwap03(a,b);
cout << a <<endl << 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 = test02();
cout << ref << endl;
//如果要作为左值,那么必须要返回引用
test02() = 1000;
cout << ref << endl;
system ("pause");
return 0 ;
}
四、引用的本质
引用的本质是一个指针常量
指针常量:指针的指向可以修改,但指针的值不能修改。
五、常量引用
#include "iostream"
using namespace std;
void showValue(const int &val) //防止修改的误操作
{
//val = 1000;
cout << "val = " << val <<endl;
}
int main()
{
int a = 100;
showValue(a);
system ("pause");
return 0 ;
}