目录
引用的基本使用
作用:给变量起别名
语法:数据类型 &别名 = 原名
例子:
int a=10;
int &b=a;
b和a占同一个内存地址(可以理解为使b具有a的地址)
对比指针:
int a=10;
int* p=&a;
a和p占不同的内存地址
引用的本质是指针常量(指针指向的地址不可以改变,值可以)int * const b=&a;
引用的注意事项
1.引用必须初始化(必须告诉是谁的别名)
2.引用一旦初始化后,就不可以更改了(引用不能脚踏两条船)
引用做函数参数
#include <iostream>
using namespace std;
//交换函数
//1.值传递
void mySwap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
//2.地址传递
void mySwap02(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//3.引用
void mySwap03(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
//mySwap01(a, b); //值传递,形参不会修饰实参
//mySwap02(&a, &b);//地址传递,形参会修饰实参
mySwap03(a, b); //引用传递,形参会修饰实参
cout << "a=" << a << endl;
cout << "b=" << b << endl;
system("pause");
return 0;
}
引用做函数返回值
1.不要返回局部变量的引用
//这段代码是错误的
int& fun()
{
int a=10;
return a;
}
//这段代码是正确的
int& fun()
{
static int a=10;
return a;
}
2.函数的调用可以作为左值
fun()=1000;
3.常量引用(const修饰的引用)作为函数参数可以防止误操作,和值传递作用类似,但可以节省内存