错误示例:
#include<stdio.h>
void Swap(int a,int b) {
int tmp = a;
a = b;
b = tmp;
}
void main() {
int a = 10;
int b = 20;
printf("交换之前\n");
printf("a=%d,b=%d\n",a, b);
Swap(a, b);
printf("交换之后\n");
printf("a=%d,b=%d\n", a, b);
}在这里插入代码片
正确方法:交换两个实参的地址
#include<stdio.h>
void Swap(int *a,int *b) {
int tmp =*a;
*a = *b;
*b = tmp;
}
void main() {
int a = 10;
int b = 20;
printf("交换之前\n");
printf("a=%d,b=%d\n",a, b);
Swap(&a, &b);
printf("交换之后\n");
printf("a=%d,b=%d\n", a, b);
}
不使用临时变量交换两个整型数
此处同样要使用指针的方式交换两个参数的地址
#include<stdio.h>
void Swap(int *a,int *b) {
*a = *a ^*b;
*b = *a ^*b;
*a = *a ^*b;
}
void main() {
int a = 10;
int b = 20;
printf("交换之前\n");
printf("a=%d,b=%d\n",a, b);
Swap(&a, &b);
printf("交换之后\n");
printf("a=%d,b=%d\n", a, b);
}