#include<stdio.h>
swap(int x, int y);
int main(int argc, char* argv[])
{int a,b;
a=3;b=4;
printf( "%d,%d\n",a,b);
swap (a,b);
printf("%d,%d",a,b);
return 0;
}
swap(int x, int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
那要怎么样修改才能实现交换a和b的值呢?
追答用地址传递的方式,也就是要将a的地址赋给形参,让形参指向变量a所在的内存单元,那么在函数中修改形参指向的单元值就使得变量a的值也发生了变化,上面的程序需要修改以下几个地方:
(1)swap(int x, int y);改为swap(int *x,int *y); 第二行
(2)swap (a,b);改为swap (&a,&b); 第七行
(3)函数定义部分
swap(int x, int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
改为
swap(int *x, int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}