最近自己写Swap函数的时候发现函数总是没有发挥作用,仔细研究了一下发现自己对形参和实参的理解还不够
void Swap(int V,int W)
{
int temp;
temp = V;
V=W;
W = temp;
}
int main()
{
int A=1;
int B=2;
Swap(A,B);
printf("%d",A) ;
}
在这里插入代码片
在自己写的原来的代码中,变量A,B的值只是传递给了V,W,然后V,W的在函数中实现了转换,但是对于原来的变量A,B没有任何影响,所以最后输出的A,B还是原来的值
效果等同于
int main()
{
int A=1;
int B=2;
A=V;
B=W;
int temp;
temp = V;
V=W;
W = temp;
printf("%d",A) ;
}
在这里插入代码片
想要实现效果,可以传入实际参数的地址,这样形式参数和实际参数的地址都是一样的,改变了形式参数的值实际参数也随之改变了。
void Swap(int *V,int *W)
{
int temp;
temp = *V;
*V=*W;
*W = temp;
}
int main()
{
int A=1;
int B=2;
Swap(&A,&B);
printf("%d",A) ;
}
在这里插入代码片