通過指針參數實現兩數值交換。核心:函數接收地址,通過解引用修改原變量。
#include <stdio.h>
#include <stdlib.h>
void swap(int *px, int *py) {
int temp = *px;
*px = *py;
*py = temp;
}
int main() {
int a, b;
printf("輸入兩數:");
scanf("%d %d", &a, &b);
printf("交換前:a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("交換後:a=%d, b=%d\n", a, b);
system("pause");
return 0;
}
| 環節 | 代碼 | 說明 |
|---|---|---|
| 函數聲明 | void swap(int *px, int *py) | 參數為指針類型 |
| 調用傳遞 | swap(&a, &b) | 取地址符 & 傳遞地址 |
| 函數內操作 | *px = *py | 解引用修改原變量值 |
| 值傳遞對比 | swap(a, b) | 只能修改副本,原值不變 |
調用前: 調用 swap(&a, &b) 後:
main: swap:
a = 10 ────┐ px ────┐
b = 20 ────┼──> │ │
│ py ────┘
▼ ▼
交換完成
a = 20, b = 10
&:swap(a, b) 傳值而非傳址void swap(int x, int y) 無法修改原值px = py 只改變局部指針指向#define SWAP(type, a, b) do { type t = a; a = b; b = t; } while(0)
SWAP(int, a, b); // 展開為安全的語句塊