C程式設計,通過指標來交換a,b值 易錯點

2021-09-25 21:11:01 字數 656 閱讀 4828

這篇文章記錄乙個易錯點

如果要通過函式來實現a,b值的交換,我們應該都知道下面這個例子應該是實現不了的:

//以傳值的方式來呼叫函式

void swap(int a,int b)

因為引數傳遞採用的是傳值方式,上面的函式不會影響到呼叫它的例程中的a和b的值。

//擬定採用的指標傳遞位址的方式

void swap(int *a,int *p)

猛地一看,認為這個方式應該也能夠實現a,b交換的功能,其實這個函式和上面那個沒有實質區別,最後還是實現不了。

正確的函式應當是這樣的:

//正確的指標使用方式

void swap(int *a,int *b)

為了驗證我說的是正確的,我做了這個測試:

補充:因為最近在學習c++,所以用c++也寫了乙個交換的函式,這裡採用傳引用的方式,同樣能夠達到效果:

交換a,b值的C 各種寫法

通常swap a,b 都是用中間變數 public static void swap1 ref int a,ref intb 生成的il如下 去除ref maxstack 1 locals init 0 int32temp l 0000 ldarg.0 l 0001 stloc.0 l 0002 l...

採用演算法來將a b的值進行 直接 交換

簡單來說,就是通過普通的 和 運算來實現。如下 int a,b a 10 b 12 a b a a 2 b 12 b b a a 2 b 10 a b a a 12 b 10 通過以上運算,a和b中的值就進行了交換。表面上看起來很簡單,但是不容易想到,尤其是在習慣標準演算法之後。它的原理是 把a b...

C程式設計 指標 返回指標值的函式

設有3個學生,每個學生有4門課程,要求使用者輸入學生的學號之後,輸出該名學生的四門課程成績 include void main 三個學生有了成績.float p 要呼叫的函式返回了乙個指標,我們是需要接受的呀,定義指標變數 p來接受返回的pt指標變數 int i,k 使用者要知道是哪乙個學生的呀,得...