1.引用的格式:
类型 &引用=已定义的变量名
int i=5;
int &j=i;
j=8; (i的值也会改变,因为j即为i的别名)
2.指针是通过地址间接访问某个变量,需要书写间接运算符“*”;
引用是通过别名直接访问某个变量。
3.引用作为函数参数:
① 用变量做函数参数
#include <iostream>
using namespace std;
void swap(int m,int n)
{
int temp;
temp=m; m=n; n=temp;
}
int main()
{ int a=5,b=10;
cout<<"a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;
return 0;
} a=5,b=10 a=5,b=10
② 用指针做函数参数
#include <iostream>
using namespace std;
void swap(int *m,int *n)
{
int temp;
temp=*m; *m=*n; *n=temp;
}
int main()
{ int a=5,b=10;
cout<<"a="<<a<<",b="<<b<<endl;
swap(&a,&b);
cout<<"a="<<a<<",b="<<b<<endl;
return 0;
} a=5,b=10 a=10,b=5
③ 用引用做函数参数
#include <iostream>
using namespace std;
void swap(int &m,int &n)
{
int temp;
temp=m; m=n; n=temp;
}
int main()
{ int a=5,b=10;
cout<<"a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;
return 0;
} a=5,b=10 a=10,b=5
#include <iostream>
using namespace std;
void swap(int &m,int n)
{
int temp;
temp=m; m=n; n=temp;
}
int main()
{ int a=5,b=10;
cout<<"a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;
return 0;
} a=5,b=10 a=10,b=10
4.使用引用返回函数值:
使用引用可以返回函数的值, 采用这种方法可以将该函数调用放在赋值运算符的左边。
#include<iostream>
using namespace std;
int a[ ]={1,3,5,7,9};
int & index(int i) //定义函数返回一个int类型的引用,等价于返回数组元素a[i]
{ return a[i] ;}
int main()
{
cout<<index(2)<<endl;//等价于输出数组元素a[2]的值
index(2)=25; //将函数调用放在赋值运算符的左边, 等价于将a[2]赋值为25
cout<<index(2);
return 0;
}
运行结果:5
25
5.可以用const对引用加以限定引用,但不允许改变该引用的值.
例如:
int i=5;
const int &a=i; //声明常引用,不允许改变引用a的值
6.
引用必须初始化
引用是某个变量或对象的别名
引用和它所引用的变量共用一个存储空间
引用不可以没有数据类型(即int)