两个数交换问题
使用第三个参数实现数字交换
子函数的改变要想影响到父函数,必须满足如下条件
1.传指针2.解引用
代码如下
#include <stdio.h>
void Swap1(int *a,int *b)
{
int tmp=0;
tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int a=10;
int b=20;
Swap1(&a,&b); //如果ab不取地址,则Swap1内部修改的ab值对实参ab不会有影响,如下例
printf("%d,%d\n",a,b);
return 0;
}
20,10
请按任意键继续. . .
错误代码如下
void Swap_err(int a,int b)
{
int tmp=0;
tmp=a;
a=b;
b=tmp;
}
int main()
{
int a=10;
int b=20;
Swap_err(a,b);
printf("%d,%d\n",a,b);
return 0;
}
10,20
请按任意键继续. . .
不用第三个参数实现数字交换
代码如下
#include <stdio.h>
int main()
{
int a1=10;
int a2=100;
int a3=1000;
int b1=20;
int b2=200;
int b3=2000;
//第一种
a1=a1+b1;
b1=a1-b1;
a1=a1-b1;
//第二种
a2=a2^b2;
b2=a2^b2;
a2=a2^b2;
//第三种
a3=a3*b3;
b3=a3/b3;
a3=a3/b3;
printf("%d,%d\n",a1,b1);
printf("%d,%d\n",a2,b2);
printf("%d,%d\n",a3,b3);
return 0;
}
20,10
200,100
2000,1000
请按任意键继续. . .