国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++參數傳遞的效率思考

2019-11-06 06:38:17
字體:
來源:轉載
供稿:網友
C++中對函數定義,傳遞參數的方法,直接傳遞值或者傳遞參考值。首先直接傳遞值例如:
#include <iostream>using namespace std;int addition (int a, int b){  int r;  r=a+b;  return r;}int main (){  int z;
  int x = 5, y = 3;  z = addition (x,y);  cout << "The result is " << z;}

輸出結果為8

在這種傳遞方式下,x,y的值經過函數處理后是不會改變的。即:

#include <iostream>using namespace std;void duplicate (int a, int b, int c){  a*=2;  b*=2;  c*=2;}int main (){  int x=1, y=3, z=7;  duplicate (x, y, z);  cout << "x=" << x << ", y=" << y << ", z=" << z;  return 0;}

這樣輸出x,y,z的結果,仍舊是1,3,7

若要調用duplicate函數成功,應用reference的方式傳遞參數。

#include <iostream>using namespace std;void duplicate (int& a, int& b, int& c){  a*=2;  b*=2;  c*=2;}int main (){  int x=1, y=3, z=7;  duplicate (x, y, z);  cout << "x=" << x << ", y=" << y << ", z=" << z;  return 0;}這樣輸出的結果就是 2,6,14了。

通過之前value的方式在傳遞參數時,當只是int型等數值時并無大礙,但是當參數是一個復雜的混合數據類型。例如:

34
string concatenate (string a, string b){  return a+b;}
兩個字符串再這樣傳遞參數則,則對調用函數產生了大量的數據處理,這樣效率是很低的。而是用reference的方法傳遞參數則不會有這種情況,相對更加高效。例如:

string concatenate (string& a, string& b){  return a+b;}但是這樣也會產生問題,a,b的值可能會因為調用函數改變了原本的值,那這樣怎么處理呢?

直接上代碼:

string concatenate (const string& a, const string& b){  return a+b;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 陇川县| 江源县| 新闻| 元朗区| 荣成市| 江口县| 武鸣县| 凤城市| 宣汉县| 临汾市| 济宁市| 兴业县| 托里县| 荣成市| 错那县| 新河县| 阳原县| 成都市| 祁东县| 盱眙县| 木里| 中牟县| 乐东| 黑龙江省| 女性| 高密市| 蒙山县| 车致| 互助| 阿图什市| 文成县| 鄄城县| 四平市| 五大连池市| 仁怀市| 平潭县| 定结县| 甘洛县| 新竹县| 萝北县| 韶山市|