1 什么是引用
一个与指针密切相关的特殊数据类型--引用
*引用是一个变量的别名,定义引用类型变量,实质上是给一个已定义的变量起一个别名,引用类型变量与其相关的变量使用同一个内存空间。
定义引用类型变量的一般格式为:
类型 &引用名=变量名
如:
int a=3;
int &ra=a;
3 引用的一些要点
1)引用与指针的不同:
a.指针是一个变量,可以把它再赋值指向别的地址
b.而引用一旦初始化,其地址不会再变
2)定义引用时,必须将其初始化。
3)引用数组时,要注意引用方法。
例如:
int a[10];
int &ra=a;//错误:不能建立数组的引用
//数组是某个数据类型元素的集合,数组名表示该元素集合空间的起始地址,它自己不是一个真正的数据类型,所以这种引用是不对的。
int &rae=a[0];//正确:指向数组的元素
下面给出正确引用数组的方法:
#include<iostream>
using namespace std;
int main(){
int a[5]={1,2,3,4};
int (&ra)[5]=a;
cout<<ra[3];
return 0;
}
这样引用,编译是没有错误的,并且引用数组可以像原来数组那样使用,
想要正确引用数组,要注意以下两点:
第一个地方是‘&’的位置,它必须要和引用数组的名称用括号括起来。
第二个地方是必须指定引用数组中的元素个数,且元素的个数必须要和被引用的数组中的元素个数相同。
4、可以引用一个结构体
例如:
struct PERSON{
int age;
char name[25];
};
PERSON one;
PERSON &rone=one;
5、引用本身也不是一种数据类型,所以没有引用的引用。
4 引用在函数参数中的引用
1)引用作函数参数
c++提供引用,主要用途之一是建立函数参数的引用传递。引用说明符&可以在函数里说明引用类型参数,即引用作函数参数
下面的swap函数可以用引用作函数参数:
void swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
现在如果要交换两个整型变量i和j的值,可用下面的方法调用swap函数:
int a=10,b=20;
swap(a,b);//交换后结果为:a=20,b=20;
通过引用传递,不用指针也能够改变实参的值。