之前发布了一条博客,里面的代码存在部分问题,以及问题的解答
#include "stdio.h"
void Swap(int x,int y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
max(int x,int y)
{
int q=0;
if(x>y)
q=x;
else
q=y;
return q;
}
int main()
{
int a=10;
int b=20;
Swap(a,b);
max(a,b);
printf("%d \n",a);
printf("%d\n",max(a,b));}
[点击并拖拽以移动]
10
20
Press any key to continue
在这段代码中并没有成功实现a,b的正确传递,原因是x,y也分别有自己的空间,传值过去后并不能正确的输出。
解决办法如下:
#include "stdio.h"
void Swap(int* x,int* y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
max(int x,int y)
{
int q=0;
if(x>y)
q=x;
else
q=y;
return q;
}
int main()
{
int a=10;
int b=20;
Swap(&a,&b);
max(a,b);
printf("%d %d\n",a,b);
printf("%d\n",max(a,b));}
竟然有多余的空间导致交换无法进行,那么我们就使用指针来交换,传指针即可解决上面问题
20 10
20
Press any key to continue
这样才是正确的传递做法