正确解法:
#include<stdio.h>
void Swap(int* pa,int* pb)
{
int tmp;
tmp=*pa;
*pa=*pb;
*pb=tmp;
}
int main()
{
int a=10;
int b=20;
printf("a=%d b=%d\n",a,b);
Swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
我们正确的做法应该是用指针取地址的方式来解决这个问题,这个*p才能拿着将要去替换的地址去把这个地址给替换了
注:这个函数没有返回值所以在命名的时候用的是空的返回值void(函数必须要有返回值 就算是空的也要写出来);在主函数下开始引用的时候要用&进行取地址
错误解法:
#include <stdio.h>
void Swap(int x,int y)
{
int tmp=0;
tmp=x;
x=y;
y=tmp;
}
int main()
{
int a=10;
int b=20;
printf("a=%d b=%d\n",a,b);
Swap(a,b);
printf("a=%d b=%d\n",a,b);
return 0;
}
如果是这种方法则会出现值传到了Swap里面去 但是传不出来 地址没变(也就是说x是x a是a,x是的值如何都影响不了a)
标签:tmp,函数,int,打印,整数,pb,地址,Swap,printf From: https://blog.51cto.com/u_15899086/6020603