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;

如此一來,就可成功將兩變數進行交換。

Similar Posts