呼叫函式交換兩個變數的值為什麼出錯?

2021-09-29 09:04:23 字數 1055 閱讀 4904

#include

using

namespace std;

void

swap

(int x,

int y)

//定義swap函式來交換兩個變數

intmain()

程式執行結果:

5,10

5,10

process returned 0 (0x0) execution time : 0.089 s

press any key to continue.

分析:

我們發現並未實現交換的目的,為什麼呢?原來是系統呼叫函式時,系統首先建立兩個臨時變數x和y,這兩個變數雖然和main()函式的變數名相同,但是它和main()函式的x和y沒有關係,他們是系統在另外的區域申請的,屬於swap函式的區域性變數,這就相當於main()函式給x和y分配的是a區域,然而呼叫swap函式會在b區域建立同名的變數,並交換b區域的x和y,呼叫函式結束,main()的x和y仍然和原先相同,因此系統輸出的x和y仍然是原先的值,沒有實現交換變數的目的。

#include

using

namespace std;

void

swap

(int

&x,int

&y)//定義swap函式來交換兩個變數

intmain()

程式執行結果:

5,10

10,5

process returned 0 (0x0) execution time : 0.121 s

press any key to continue.

分析:

swap(int &x,int &y)這裡採用引用的方法來實現交換變數。在系統呼叫swap(int &x,int &y)函式時,swap函式分別給main()函式內的x和y取了乙個別名x和y,swap函式通過使用別名實現x和y的交換,這裡訪問swap的x和y和訪問main()函式的x和y效果完全一樣。

交換兩個變數的值

交換兩個變數的值 交換兩個變數的值是我們學習c語言常見的問題,通常我們採取的方式是定義中間變數,通過中間變數交換這兩個變數值。1 直接在主函式裡完成 int a 2,b 3 int t t a a b b t 2 通過定義swap 完成交換,其中可以通過引用 位址傳遞完成變數值交換 引用 inclu...

交換兩個變數的值

有兩個整數a和b,下面將用四種方法把他們的值進行交換 方法1 借助臨時變數tmp include intmain 如果要求不能建立其他變數,還有下面的方法 方法2 巧妙進行數值運算 include intmain 方法3 二進位制異或運算 include intmain 整數10的二進位制數表示為 ...

交換兩個變數的值

交換兩個變數的值 方式一 定義臨時變數的方式 int temp num1 num1 num2 num2 temp 方式二 num1 num1 num2 num2 num1 num2 num1 num1 num2 好處 不用定義臨時變數 弊端 1 相加操作肯超過儲存範圍 2 有侷限性 只適用於數值型別...