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

2021-10-03 03:12:13 字數 471 閱讀 6360

//1. 值傳遞

void myswap01(int a, int b)

//2. 位址傳遞

void myswap02(int* a, int* b)

//3. 引用傳遞

void myswap03(int& a, int& b)

int main()

結果

值傳遞並不改變實參的大小,位址傳遞和引用傳遞均改變位址大小。

原因是什麼?是因為考別構造。

1.函式傳參的時候,會對形參拷貝乙份,放在棧區,實際操作的是棧區的變數(拷貝),函式執行完畢時。編譯器會釋放棧區所占用的空間,所以並不改變實參大小。

2.位址傳遞的時候,傳入的是實參位址,根據位址對實參操作。

3.引用構造,函式傳參的實收標記引用的變數,引用就是對原引數位址操作,因為引用名和原變數名指向的是同一塊位址,所以相當於位址傳遞。(引用的本質就是指標常量。)

函式引數傳遞的三種方式

問題及 1 檔名稱 my first blog.cpp 作 者 林志文 完成日期 2016年9月5日 版 本 號 v1.0 問題描述 交換兩個整型變數的swap函式的三個版本 輸入描述 兩個整數 程式輸出 交換後的兩個整數 includevoid myswap int p1,int p2 void ...

c 引數傳遞的三種方式

在 資料結構與演算法分析 c 描述 第16頁提到了c 中三種不同的引數傳遞方式,分別是 1 按常量引用呼叫 call by constant reference 2 按值呼叫 3 引址呼叫 call by reference 上網查了下資料之後 我還是覺得分成這樣三種更便於理解 1 按值呼叫 形如 ...

引數傳遞的三種方式

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