C語言精進—SWAP函數
整體程式碼
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
printf("Before swap: a = %d, b = %d\n", *a, *b);
int temp;
temp = *a;
*a = *b;
*b = temp;
printf("After swap: a = %d, b = %d\n", *a, *b);
}
int main(void)
{
int x = 10;
int y = 6;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x,&y);
printf("After swap: x = %d, y = %d\n", x, y);
}
假設有x與y兩個變數,我們要實現經典的SWAP函數,就是要將這兩個變數的值互換。
在SWAP函數輸入的部分會採用指標int *a與int *b,會採用指標而不是單純a與b的變數,是因為我們想要真正將兩變數的值交換,如果只是用變數而不是指標,並不會真正把兩變數的值交換,只會改掉他們的副本,因為變數記憶體位置並不相同,用指標才能真正改掉變數的值。
這邊就會定義暫時變數,因為我們要將變數交換,所以要有一個暫時變數,將a或b的值做儲存。待之後將a或b的值替換掉之後,這個暫時變數還可以保存紀錄之前變數的值。就可在下一次換回來。
我們先將暫時變數儲存a變數的值。
temp = *a;
將a變數的值改為b變數的值。
*a = *b;
將b變數的值改為暫時變數的值,也就是一開始的a值。
*b = temp;
如此一來,就可成功將兩變數進行交換。