基礎 函式的引數傳遞

2022-06-29 04:06:10 字數 1853 閱讀 2576

#include 

using namespace std;

int main()

這是一段用於交換輸入的兩個整數的值的**,測試一下

輸入資料:

13

21

輸出結果:

before swap a and y:

1321

after swap x and y:

2113

沒有任何問題

因為要交換多組資料,我們把交換的**改寫成用 函式 實現

#include using

namespace

std;

void swap(int x, int

y);int

main()

void swap(int x, int

y)

輸入資料:

13

21

輸出結果:

before swap a and y:

1321

after swap x and y:

1321

改寫後的**並沒有交換 x,y 的值,回想下剛剛的思路

其實,這種思路資料是錯誤的

c++的函式的引數方式是 值傳遞 ,swap 函式在被呼叫時,系統會給形參分配空間,用實參的值初始化 swap 的 x,y

通過上圖我們可以看到,函式的值傳遞是單向的(注意:變數名只是個代號,重要的是它所指向的東西)

那麼要怎麼樣才能在 swap 函式交換 main 函式的 x,y呢?

我們可以使用 引用傳遞 的方式對函式的引數進行傳遞

引用  是一種 特殊型別 的 變數 ,相當於給 變數 起乙個 別名 ,來看下下面的**

/*

*摘 要:引用傳遞示例

*作 者:水汐音

*完成日期:2023年2月27日

*/#include

using

namespace

std;

intmain()

輸出結果

before:34

after:

44

可以看到,b 作為 x 的別名,改變變數 b 的值 就是改變變數 x 的值

打個比方,我們假設 李華 的小名是 小華,

別人寄給了小華華乙個刀片,跟別人寄給李華乙個刀片是一樣的

同理,把 y 的值給了 b,跟把 y 的值給了 x 是一樣的

通過 引用傳遞 我們把 swap 函式 debug

#include using

namespace

std;

void swap(int &x, int &y);

intmain()

void swap(int &x, int &y)

輸入資料:

13

21

輸出結果:

before swap a and y:

1321

after swap x and y:

2113

成功交換

int a = 9

;int &na = a; //

定義引用

int *p = &a; //

取位址

2018-02-27

水汐音

c 基礎 函式引數傳遞,陣列

1.c 中函式引數傳遞 從概念上來說一下這幾種函式傳參方式及區別 1 值傳遞 形參是實參的拷貝,改變函式形參的值並不會影響外部實參的值,返回值那是 return 考慮的 2 指標傳遞 指標傳遞引數從本質上來說也是值傳遞,它傳遞的是乙個位址 值傳遞過程中,被調函式的形參作為被調函式的區域性變數來處理,...

函式的引數傳遞

一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和 引用傳遞 以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。值傳遞 passl by value 過程中,被調函式的形式...

函式的引數傳遞

def func a 1,b 2,c 3 形參有預設值 print a,b,c func func 4,5,6 func 5,6 func 7 func a 8 func a 9,b 10 func 11,c 12 func 11,a 12 和func a 12,13 是錯誤的 def calcsu...