C語言和C 中幾種實現交換變數的值方法

2021-10-05 14:08:07 字數 1661 閱讀 3291

先來看

交換兩個變數的值,容易聯想到『』兩量交換借助中間變數『』的方法。

若用函式呼叫的方式來實現交換,沿用上述思路初步實現如下:

#include

//include

#include

//using namespace std;

void

swap

(int m,

int n)

intmain()

結果如下

有沒有感到疑惑呢?

涉及到了函式傳遞中至關重要的問題—實參和形參之間的關係。

是因為函式的括號裡的為形參 而形參只是實參的乙份拷貝,所以說在函式裡無論你怎麼動形參,實參的值都不會因此而改變什麼,所以也就無法達到交換兩個變數值得效果。

/*第一種c語言最簡單不呼叫函式的*/

#include

#include

intmain()

printf

("%d %d\n"

, a, b)

;return0;

}

結果如下

第二種

改進方法:利用指標

# include

void

swap

(int

*m,int

*n)int

main()

結果如下:

現在怎麼就實現了呢?

用兩個指標變數則能直接獲取到兩個變數的位址 如果將兩個變數的位址交換了,可想而知兩個變數的值也就交換了。

第三種

再來看c++實現相同功能:利用指標實現傳參

/*第一種c++利用指標*/

# include

using

namespace std;

void

swap

(int

*m,int

*n)int

main()

第四種c++基於c語言擴充套件:利用引用實現傳參

/*第二種c++利用引用*/

# include

using

namespace std;

void

swap

(int

&m,int

&n)int

main()

附上結果:

棧的c語言和c 實現

棧 stack 是一種,先入後出的資料結構,它只有乙個出口。棧允許新增元素,移除元素取得最頂端元素,但是除了最頂端之外,沒有方法可以訪問棧的其他元素,棧的遍歷是不存在的 從頭到尾出棧 c語言實現 棧有兩種儲存結構順序儲存結構和鏈式儲存結構 在這裡我們考考慮順序儲存結構,考慮棧線性表構成 表尾端我們稱...

c語言和c 的「 」的語言

在c語言中,有三種作用,分別如下 1.取位址。單目運算子。用來取乙個變數的位址。比如int i,p p i 這裡的 作用是取變數i的位址。int a 1 int p a 取位址給位址變數,所以這個是取位址 引用 int a 1 int p a 取乙個變數的別名,我們可以通過這個變數賦值給標有 符號的...

c語言和c 中struct的區別

1.雖然長的一樣,但是本質上型別不同 c語言中 struct是使用者自定義資料型別 udt c 中struct是抽象資料型別 adt 所以下面 struct he 在c裡面實際上資料型別為 struct he 所以定義乙個結構he變數都要 帶上struct.structhe a c語言 變數方式 而...