交換函數標準寫法
void swap(int *x, int *y) {
int tmp = *x;
*x = *y;
*y = tmp;
}
完整演示程式
#include
#include
void swap(int *x, int *y) {
int tmp = *x; *x = *y; *y = tmp;
}
int main() {
/* 動態分配演示 */
int *x = malloc(sizeof(int));
int *y = malloc(sizeof(int));
if (!x || !y) return -1;
*x = 1; *y = 2;
printf("交換前: x=%d, y=%d\n", *x, *y);
swap(x, y);
printf("交換後: x=%d, y=%d\n", *x, *y);
free(x); free(y);
x = y = NULL;
/* 變量地址交換(更常見) */
int a = 100, b = 200;
printf("交換前: a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("交換後: a=%d, b=%d\n", a, b);
return 0;
}
關鍵點
- 函數參數為指針,傳遞變量地址
&a,函數內解引用 *x 修改原值。
- 動態分配版本展示指針本身不變,指向的內容交換。
- 務必檢查
malloc 返回值,使用後 free 並置 NULL 防野指針。