c 引數傳遞的三種方式

2021-06-15 10:11:33 字數 753 閱讀 1632

在《資料結構與演算法分析 c++描述》第16頁提到了c++中三種不同的引數傳遞方式,分別是:

1、按常量引用呼叫(call by constant reference

)2、按值呼叫 

3、引址呼叫(call by reference)。上網查了下資料之後

我還是覺得分成這樣三種更便於理解:

1、按值呼叫: 形如 int fun(int x)

2、指標呼叫:形如 int fun(int* p)

3、引址呼叫:形如 int fun(int &x) 或者 int fun(const int &x)

按值呼叫

存在實參的複製開銷,要是有返回值又要複製一次。所以對於比較複雜的類型別實參,按值呼叫的複製開銷是很大的。由於函式fun會對實參x複製之後再進行處理,所以按值呼叫的函式不管怎麼處理都不會改變實參的值。

#include using namespace std;

int fun(int x)

void main()

void main()

void main()

{ int a=1;

int b=fun(a);

cout<

輸出結果:a=100

如果在fun(int &x)形參型別之前加上const,在編譯時會發生如下錯誤:

引數傳遞的三種方式

引數傳遞的三種方式 按值傳遞 include using namespace std void swap int a,int b int main 缺點 記憶體開銷很大。對於傳遞一般引數 如果傳遞的參數量過多,例如8000個引數,則需要在棧中複製8000個引數傳遞過去,棧只有2m的空間,這樣的話棧的...

C 函式引數傳遞的三種方式

1.值傳遞 void myswap01 int a,int b 2.位址傳遞 void myswap02 int a,int b 3.引用傳遞 void myswap03 int a,int b int main 結果 值傳遞並不改變實參的大小,位址傳遞和引用傳遞均改變位址大小。原因是什麼?是因為考...

Action 引數傳遞的三種方式

qtp提供三種引數傳遞方式 parameter environment datatable parameter 函式傳遞引數 如 分別建立兩個同級別 action outputact 將引數傳遞出來 inputact 獲取 ouputact 傳遞出來的引數 在兩個 action 中設定輸出與輸入引數...