接上篇(指针(1)变量篇-CSDN博客),我们这一期来讲一讲引用。
简介
引用是一种很容易和指针搞混的数据类型。他和指针很相似但不相同。引用标识符是“&”。且听下文分解。
初始化
引用必须在初始化的时候就要告诉编译器它要初始化为谁的引用,不然就会编译错误。引用的赋值很简单。只要直接写上变量名就行。下面的b就是一个初始化为a的整型引用。
int a=1;
int &b=a;
操作
先强调一下,引用变量一经初始化就不能再改变它引用的对象,且它的所有信息都与原变量保持一致。后面只要其中一个进行了操作就会影响两个的数值。你们可以把引用变量当作原变量的另一个名字。
你们可以好好分析一下下面程序的输出。
#include <iostream>
using namespace std;
int main(){
int a=1;
int &b=a;
cout<<&a<<' '<<&b<<'\n';
cout<<a<<' '<<b<<'\n';
a+=10;
cout<<a<<' '<<b<<'\n';
a-=b/2+1;
int temp=a;
for(int i=1;i<temp;i++){
b*=i;
}
cout<<a<<' '<<b<<'\n';
return 0;
}
输出:
函数和引用
众所周知,在函数中的参数是形参,是在函数中临时定义的。它的值等于函数调用时传入的参数——实参,但它并不能对实参进行改变。
那我们怎么才能在函数中操作实参呢?嘿嘿,这时候引用就出来了。如果将形参初始化为实参的引用,那么形参的操作就能影响实参了。同时,引用也可以作为返回值。
试一试
1.编写一个整型的swap函数。
2.编写一个能让a和b都等于a+b的函数。
1.答案
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
(为了避免重复,请不要在前面写上using namespace std;)
错误示范:
void swap(int a,int b){
int temp=a;
a=b;
b=temp;
}
这样操作的是形参,和实参没关系。
2.答案
void add(int &a,int &b){
a=b=a+b;
}
小结
本期我们讲解了引用。下一篇是数组。感谢大家的支持,欢迎在评论区反馈问题!