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:改寫後的**並沒有交換 x,y 的值,回想下剛剛的思路1321
after swap x and y:
1321
其實,這種思路資料是錯誤的
c++的函式的引數方式是 值傳遞 ,swap 函式在被呼叫時,系統會給形參分配空間,用實參的值初始化 swap 的 x,y
通過上圖我們可以看到,函式的值傳遞是單向的(注意:變數名只是個代號,重要的是它所指向的東西)
那麼要怎麼樣才能在 swap 函式交換 main 函式的 x,y呢?
我們可以使用 引用傳遞 的方式對函式的引數進行傳遞
引用 是一種 特殊型別 的 變數 ,相當於給 變數 起乙個 別名 ,來看下下面的**
/*輸出結果*摘 要:引用傳遞示例
*作 者:水汐音
*完成日期:2023年2月27日
*/#include
using
namespace
std;
intmain()
before:34可以看到,b 作為 x 的別名,改變變數 b 的值 就是改變變數 x 的值after:
44
打個比方,我們假設 李華 的小名是 小華,
別人寄給了小華華乙個刀片,跟別人寄給李華乙個刀片是一樣的
同理,把 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 = 92018-02-27;int &na = a; //
定義引用
int *p = &a; //
取位址
水汐音
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...