你好!!!
方法很多,我用了变量的的地址作为参数和用到引用作为参数,写了2个程序实现交换:
1.用指针作为形参,交换的是指针所指向的值,而不是指针变量的值。例如:
子函数写这样:
void
swap(int
*a,int
*b)
{
int
*temp;
temp=a;
a=b;
b=temp;
}
交换的是指针的值,但是交换后,在子函数了实现了交换,但是在主函数了却没有实现交换。
代码如下:
#include
void
swap(int
*a,int
*b)
{
int
temp;
temp=*a;
*a=*b;
*b=temp;
}
void
main()
{
int
x,y;
printf("请输入两个整数:\n");
scanf("%d%d",&x,&y);
printf("交换前的:x=%d,y=%d\n",x,y);
swap(&x,&y);//用x,y的的地址作为实参
printf("交换后的:x=%d,y=%d\n",x,y);
}
测试:
请输入两个整数:
3
6
交换前的:x=6,y=3
交换后的:x=6,y=3
Press
any
key
to
continue
2.要形参是引用,其实引用就是同一个变量的不同称呼而已,比如;人的大名和小名都是指的同一个人,那么在子函数了交换,在主函数里也实现了交换。
代码如下:
#include
void
swap(int
&a,int
&b)
{
int
temp;
temp=a;
a=b;
b=temp;
}
void
main()
{
int
x,y;
printf("请输入两个整数:\n");
scanf("%d%d",&x,&y);
printf("交换前的:x=%d,y=%d\n",x,y);
swap(x,y);
printf("交换后的:x=%d,y=%d\n",x,y);
}
测试:
请输入两个整数:
6
7
交换前的:x=6,y=7
交换后的:x=7,y=6
Press
any
key
to
continue
一种是一般的解决方案,多定义一个变量;例:
int
t;
t=a;
a=b;
b=a;
这是最常用的。
另外å