因为交换函数不用返回原变量,所以用void定义函数变量。只有通过改变a和b
的原地址才可以改变他们的值,所以需要定义(int *pa,int*pb).
核心代码就是通过改变地址来交换两个变量,如果只定义上swap2也可以交换。但只有Swap1时不能完成任务。
当实参传给形参的时候,形参其实是实参的一份临时拷贝。Swap2就是将地址传过去了,所以可以交换。
#include<stdio.h>
void Swap1(int x,int y){
int temp=0;
temp=x;
x=y;
y=temp;
}
void Swap2(int*pa,int*pb){
int temp=0;
temp=*pa;
*pa=*pb;
*pb=temp;
}
int main(){
int a=10;
int b=20;
printf("a=%d b=%d\n",a,b);
Swap1(a,b);
Swap2(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}