普通变量交换,形参的 x y 改变,实参是没有改变,因为函数形参和实参是两个不同的变量,要达到这个目,可以用指针和数组来实现
#include <stdio.h>
#include <stdlib.h>
void swap(int x,int y);
int main()
{
int a=1,b=2;
swap(a,b);
printf("%d %d",a,b);
return 0;
}
void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
指针的形参指向实参所以改变了实参变量
#include <stdio.h>
#include <stdlib.h>
void swap(int*x,int*y);
int main()
{
int a=1,b=2;
int *pa=&a,*pb=&b;
swap(pa,pb);
printf("%d %d",a,b);
return 0;
}
void swap(int*x,int*y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
数组和指针是一样的道理
#include <stdio.h>
#include <stdlib.h>
void swap(int x[]);
int main()
{
int a[2]={1,2};
swap(a);
printf("%d %d",a[0],a[1]);
return 0;
}
void swap(int x[])
{
int t;
t=x[0];
x[0]=x[1];
x[1]=t;
}