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 變為零。今天是在自己練習寫乙個快速排序的程式的時候發現這個...