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

2021-10-04 06:23:15 字數 1165 閱讀 8726

c++函式引數傳遞的三種形式:

形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的(實參->形參),引數的值只能傳入,不能傳出。

※當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。

形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作。

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值。(這裡是在說實參指標本身的位址值不會變)

//位址傳遞

形參相當於是實參的「別名」,對形參的操作其實就是對實參的操作。在引用傳遞過程中,被調函式的形式引數雖然也作為區域性變數在棧中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過棧中存放的位址訪問主調函式中的實參變數。

※被調函式對形參做的任何操作都影響了主調函式中的實參變數。

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

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

函式引數傳遞的三種方式

問題及 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 按值呼叫 形如 ...