求高人解释下面该C语言程序,并说出得出此结果的由来

void foo(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void main()
{
int a=1,b=2,c=3;
foo(&a,&b);
foo(&b,&c);
foo(&c,&a);
printf("%d, %d, %d ",a,b,c);
}

1 运行结果如下:
1, 3, 2

2 分析:
#include <stdio.h>
void foo(int *a,int *b) //函数的功能是交换a,b所指对象的值。
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void main()
{
int a=1,b=2,c=3;
foo(&a,&b); //交换a,b的值,a,,b,c的值分别为2,1,3。
foo(&b,&c); //交换b,c的值,a,,b,c的值分别为2,3,1。
foo(&c,&a); //交换c,a的值,a,,b,c的值分别为1,3,2。
printf("%d, %d, %d ",a,b,c);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-13
返回结果1, 3, 2.
foo函数也就是实现参数中a与b的值对换而已,这个算法算是有点巧妙。
首先把a与b的和放到a当中,然后把a-b的值,其实就是原来(a+b)-b的值赋值给b,然后把a-b,也就是原来(a+b)-a的值赋值给a,这样就实现了a与b的值的互换。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网