引用
什么是引用?
引用就是变量的别名,声明它代表哪个变量,它就是哪个变量的别名
声明引用的格式
int a = 5;
int &b =a; //b是a的别名
int a = 12;
int &b = a;
a = 29;
cout<<a<<" "<<b<<endl; //此时a,b为 29
b= 10;
cout<<a<<" "<<b<<endl; //此时a,b为 10
//总结:改变任意一个,另外一个都随之改变
- 引用一旦声明,必须初始化,不能,int& b;
- 不同的数据类型变量,是不能使用引用的,例如int a=12; double &c = a;
- 指针是间接访问某个变量,但引用通过别名直接访问变量
//指针与引用的使用
#include<stdio.h>
using namespace std;
int main()
{
int a = 45;
int *p = &a; //定义指针
int &b =a; //定义引用
cout<<a<<endl;
cout<<*p<<endl;
cout<<b<<endl;
}
因为,变量和它的别名的地址是相同的
常引用
引用作为函数的参数
#include<stdio.h>
using namespace std;
void Swap(int & m, int &n) //m,n就是对a和b的访问
{
int tmp = m;
m = n;
n = tmp;
}
int main()
{
int a = 10;
int b = 20;
Swap(a, b);
cout << a << " " << b << endl;
return 0;
}
相比指针,引用方便简单,不用用 “*”运算符
引用作为函数的返回值
传值,传地址,传引用,在效率上,引用和指针差不多相同。
通常的函数返回机制是将返回值复制到临时区域存储中,随后调用程序访问该区域。
返回引用则是调用程序直接访问返回值。
int & add(int a,int b)
{
a = a+b;
return a;
}
但是返回的不能是函数里面的临时变量,因为临时变量在函数调用完毕后户随着程序的结束而结束。例如:
int & add(int a,int b)
{
int c = a+b;
retrun c; //返回值应该要比函数的生命周期要长。
}
通过引用返回,可以使函数在赋值号左边,通常函数都在赋值号右边,如下例子:
int a[] = {1,3,5,7,9};
int& index(int i)
{
retrun a[i]
}
int main()
{
index(2) = 25; //把a[2]元素赋值为25
}