Swap函式交換兩個整數的值以及易錯總結

2021-10-24 18:24:02 字數 865 閱讀 1857

1.swap函式交換兩個整數的值的錯誤做法1:只交換了兩個數的形參

void

swap_error1

(int a,

int b)

這種交換方式只交換了swap函式裡邊兒a,b的值,而主函式中的a和b並沒有發生改變 ,這種情況屬於交換失敗

2.swap函式交換兩個整數的值的錯誤做法2:只交換了形參的指向

void

swap_error2

(int

*p1,

int*p2)

這種情況只交換了形參的指向,而實際上主函式內的兩個整數值並未發生改變

可以理解為只只交換了兩個房間的鑰匙,但是兩把鑰匙仍然只能開對應的房間,所以兩個房間內容並未被改變

3.swap函式交換兩個整數的值的錯誤做法3:出現野指標(懸掛指標)

void

swap_error3

(int

*p1;

int*p2)

*tmp 就屬於野指標,*tmp就是個區域性變數 為乙個隨機變數值

所以野指標並不能訪問導致程式崩潰

4.swap函式交換兩個整數的正確做法:通過子函式改變父函式中的值(進行傳指標解引用)

void

swap

(int

*p1,

int*p2)

交換成功,通過p1和p2訪問到a和b的記憶體空間 從而實現a和b的交換

通過Swap函式交換兩個變數的值

正確 void swap int p1,int p2 定義乙個整形變數tmp,p1 a p2 b,首先在tmp裡存入a的值,然後將b的值賦給a,再將tmp裡的值賦給。這樣就完成了a與b兩個數的交換。我們經常會發現自己寫出的程式並不能達到我們的要求,在寫這類題的時候我們也可能寫過以下三種錯誤的編寫方式...

swap交換兩個變數

最簡單的交換兩個變數值是用指標。void swap int a,int b work 這裡有個問題,一定要想清楚。為什麼在函式體內不能交換指標了?變成這樣 void swap int a,int b will not work在swap函式裡,a and b 都會產生乙個copy來,那你tmp a ...

交換兩個變數的swap函式問題

常常看到這樣的一種寫法 void swap int a,int b 這是一種常用的很巧妙的交換的方法,但是如果用在陣列元素的交換,而a和b又指的是同乙個元素,就會出現問題了。例如 int a 10 swap a 2 a 2 這樣就會把a 2 變為零。今天是在自己練習寫乙個快速排序的程式的時候發現這個...