学过C语言的时候,我们知道函数参数是按值传递的,所以我们无法去通过函数去修改一个变量的值,在C语言中,我们采取使用向函数传递一个指针的方式去间接执行这样的过程,但是问题是每次传入指针p后,当要访问p指向的元素时,我们都要使用*操作符去解指针,这样就会带来一定的麻烦,因为谁也不想每次都使用*p来访问这个元素。在C语言中,这个问题似乎没有很好的解决方式,但是C++就是C++,C++提出了引用的概念,来解决这么一个问题。
首先,何为引用呢,首先我们理解一下 下面这个非常简单的语句
int a;
这样一个语句是什么意思
好的,这个图的意思,是,我们在内存中找到一个int型的内存空间,给他取名为a,以后我们要找到这块内存,进行读写操作时,只要使用a就可以了。
既然如此,我们可以给一块内存取个名字,我们可以给他再取一个名字吗?就像,一个人可以由大名,也可以由小名,也可以有许许多多的外号,不论是通过哪个名字我们都可以找到这个人。而C++的引用就实现了这个功能,我们可以使用下面这条语句
int &b=a;
这句话是什么意思呢,如图:
该图的意思是,我找到一个叫a的变量,告诉他,你指向的内存除了叫a也可以叫b,无论我们使用a还是b指的都是这块内存。所以引用就是取别名,也就是现实生活中的取外号,这是一个道理。
很容易知道,我们无论使用a去操作还是使用b去操作,都是对同一块内存空间操作。
现在大家应该基本知道了啥是引用了。继续。。。
给大家一个经典的d代码
void func(int a,int b){
int temp;
temp=a;
a=b;
b=temp;
return;
}
很显然,这个函数是想交换a和b的值,但是很显然,一定会失败,因为加载函数时,函数的a和b只是获得了传来的值,对于原有内存并没有改变。但是我们稍微给点改动
void func(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
return;
}
注意区别,区别不大,多了一个&,但是这个时候函数内部操作a和b时却指向了实参的实际内存,这样就达到了目的。
这里是引用在作函数参数的时候的作用。