c++中的引用

## **C++引用的基本使用** > **作用:给变量起别名 > 语法:数据类型 & 别名 = 原名 ** ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/ad291aeda2023c365e736e24a58eeb02.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/85ad147ef24facfba86bd9de4d8c2529.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/d729d16658419017a2e81007a65259b0.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 二、引用的注意事项**** > **有两点: > 1.引用要初始化 > 2.初始化之后值不能发生改变** ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/647d12541fd2833c877c5f29f11eb20f.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 三、引用做函数参数 > **我们之前是不是学过函数参数有两种传递方式,我们今天要新增一种传递方式为引用传递。 > 1.值传递 > 2.地址传递 > 3.引用传递** 1.值传递 ``` void swap(int a, int b) { int tmp = a; a = b; b = tmp; } int main() { int a = 10; int b = 20; swap(a,b); cout<<"a的值为"<<a<<endl; cout << "b的值为" <<b<< endl; system("pause"); return 0; } ``` ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/7b8910dbc4570d3820d7450e7fae0231.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 2.地址传递 ``` void swap(int * a, int * b) { int tmp = *a; *a = *b; *b = tmp; } int main() { int a = 10; int b = 20; swap(&a, &b); cout<< "a的值为" <<a<<endl; cout<< "b的值为" <<b<<endl; system("pause"); return 0; } ``` ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/7b8910dbc4570d3820d7450e7fae0231.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 3.引用传递 ``` void swap(int & a, int &b) { int tmp = a; a = b; b = tmp; } int main() { int a = 10; int b = 20; swap(a, b); cout<< "a的值为" <<a<<endl; cout<< "b的值为" <<b<<endl; system("pause"); return 0; } ``` ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/7b8910dbc4570d3820d7450e7fae0231.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 四、引用做函数的返回值 > **引用是可以作为函数的返回值存在的 > 注意两点: > 1.不要返回局部变量的引用 > 2.函数调用可以作为左值存在 > ** ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/184d76332d85f22bca5be67da2950b58.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/fc6548cd069ffa339e508661d9c9810f.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/1b6f0cc7f77ace4bfb84e7a06de80e31.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### **五、引用的本质** ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/4f663d88c5c558f2cdf1f3413e736d44.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/d802cc242760d25145f1af115edea867.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.icode9.com/i/li/?n=4&i=images/blog/202106/09/3184d4ad6b344ad302caa18450a80394.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
上一篇:【golang必备算法】动态规划 Letecode 516.最长回文子序列


下一篇:C++内存四区