【C 語言入門】156.兩個變數數值交換 (使用函式)

今天我們打算寫一函式 swap,將輸入的兩個整數變數的值交換。

我們先來看看不用指標能否順利讓兩個變數的值交換。

程式 1 (不使用指標)

#include <stdio.h>
void swap(int, int);

int main()
{
    int a = 3, b = 5;
    swap(a,b);
    
    printf("a: %d\n", a);
    printf("b: %d\n", b);

    return 0;
}

void swap(int a, int b){
    int t = a;
    a = b;
    b = t;
}

輸出結果:

a: 3
b: 5

很明顯,a 和 b 的值並沒有被交換。

接下來,我們看看利用指標的 swap 程式。

程式2(使用指標)

#include <stdio.h>
void swap(int *, int *);

int main()
{
    int a = 3, b = 5;
    swap(&a,&b);
    
    printf("a: %d\n", a);
    printf("b: %d\n", b);

    return 0;
}

void swap(int *a, int *b){
    int t = *a;
    *a = *b;
    *b = t;
}

輸出結果

a: 5
b: 3

在 main 裡面的 swap 對引數取位子,swap function 加*,加完 * 在函式裡,所有參數 a 和 b 從位址再取回變數本身。

Leave a Comment

Your email address will not be published. Required fields are marked *