以前对引用传递一知半解,尤其是 & 符号。现在做一下梳理。
Get idea from here.
先来看下 alias:
int i = 5;
int &j = i; // j is an alias to i
j = 5;
这里 j 就是 i 这个变量的另一个名字。所以这个对象现在有两个名字 i 和 j.
现在就好理解引用传递了。用这种方法,形参就变成了实参的一个 alias.
1 #include<iostream>
2 using namespace std;
3 //值传递
4 void change1(int n){
5 cout<<"值传递--函数操作地址"<<&n<<endl; //显示的是拷贝的地址而不是源地址
6 n++;
7 }
8
9 //引用传递
10 void change2(int & n){
11 cout<<"引用传递--函数操作地址"<<&n<<endl;
12 n++;
13 }
14 //指针传递
15 void change3(int *n){
16 cout<<"指针传递--函数操作地址 "<<n<<endl;
17 *n=*n+1;
18 }
19 int main(){
20 int n=10;
21 cout<<"实参的地址"<<&n<<endl;
22 change1(n);
23 cout<<"after change1() n="<<n<<endl;
24 change2(n);
25 cout<<"after change2() n="<<n<<endl;
26 change3(&n);
27 cout<<"after change3() n="<<n<<endl;
28 return true;
29 }