国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


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

圖片精選

主站蜘蛛池模板: 新郑市| 翁源县| 中卫市| 西青区| 遂平县| 来宾市| 孙吴县| 岳池县| 金门县| 承德市| 曲阜市| 高青县| 莒南县| 新泰市| 新乐市| 永昌县| 闵行区| 麻栗坡县| 灵台县| 丰原市| 盐边县| 定襄县| 金塔县| 甘德县| 永嘉县| 金阳县| 泊头市| 元朗区| 呼和浩特市| 华宁县| 三都| 白河县| 桃园县| 观塘区| 蒲城县| 淮滨县| 大渡口区| 开平市| 华宁县| 澄城县| 五峰|