一、問題引入
在C++的中新增一個(gè)特性:按引用傳遞變量,雖然與按傳遞變量的地址可以實(shí)現(xiàn)相同的結(jié)果,但引用有其獨(dú)特的地方。
引用傳遞: 引用經(jīng)常被用作函數(shù)參數(shù),使得函數(shù)中的變量名成為調(diào)用程序中的變量的別名。
通過引用變量用作參數(shù),函數(shù)將使用原始數(shù)據(jù),而不是其副本。
二、解決過程
舉例說明:
#include <iostream>
using namespace std;
void swapv(int a, int b) // 傳變量的值
{
int temp = a;
a = b;
b = temp;
}
void swapp(int *a, int *b) // 傳變量的地址
{
int temp = *a;
*a = *b;
*b= temp;
}
void swapq(int & a, int & b) // 傳引用變量
{
int temp = a;
a = b;
b = temp;
}
int main(void)
{
int wallet1 = 120;
int wallet2 = 50;
cout << "source wallet1:" << wallet1 << endl;
cout << "source wallet2:" << wallet2 << endl;
cout << endl;
swapv(wallet1, wallet2);
cout << "傳變量的值" << endl;
cout << "wallet1:" << wallet1 << endl;
cout << "wallet2:" << wallet2 << endl;
cout << endl;
wallet1 = 120;
wallet2 = 50;
swapp(&wallet1, &wallet2);
cout << "傳變量的地址" << endl;
cout << "wallet1:" << wallet1 << endl;
cout << "wallet2:" << wallet2 << endl;
cout << endl;
wallet1 = 120;
wallet2 = 50;
swapq(wallet1, wallet2);
cout << "傳引用變量" << endl;
cout << "wallet1:" << wallet1 << endl;
cout << "wallet2:" << wallet2 << endl;
cout << endl;
return 0;
}
?? 運(yùn)行結(jié)果
三、反思總結(jié)
C++新增的這項(xiàng)特性時(shí)對(duì)C語言的超越,C語言只能按值傳遞。
在使用傳遞變量的地址, 在函數(shù)使用的整個(gè)過程中, 都需要使用解引用運(yùn)算符 *
,而 傳遞引用變量, 則可以使用使用變量。
因?yàn)橐脜?shù)實(shí)際上是基于指針的代碼的另一個(gè)接口,那么什么時(shí)候應(yīng)使用引用?、什么時(shí)候應(yīng)使用指針?、什么時(shí)候應(yīng)按值傳遞?
文章來源:http://www.zghlxwxcb.cn/news/detail-413056.html
四、參考引用
C++ Primer Plus:中文版 (第六版) 第8章文章來源地址http://www.zghlxwxcb.cn/news/detail-413056.html
到了這里,關(guān)于C++的引用變量作為函數(shù)參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!