各省2016年gdp排名:请教一道C语言题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 05:53:11
下列程序的输出结果为?
#include <stdio.h>
void swap(int**r,int**s)
{ int *t;
t=*r;
*r=*s;
*s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(&p,&q);
printf("%d,%d\n",*p,*q);
}
请问答案是多少?为什么?怎么做的?解题思路是什么?
程序中的指针传递的是什么?调用函数时,交换的是什么?
我看了各位的答复,很是感谢,可我有一些问题,我是这么想的,
其实它根本就没有交换,函数的传递是单项的,*p传给**r只是让*r的地址单元内存放*p的地址,而调用的函数是交换的*r和*s,也就是只是交换的是p和q的地址,而没有交换p和q单元内的内容 ,最后打印的*P,*q,还是a,b。不知道我想的对不对,我装了TC,可不知道为什么不能用,所以无法验证,所以还请高手指点指点!谢谢!

答案是:2,1
因为函数做了交换。
思路为:
p和q存的是a和b的地址。
然后把p和q的地址(是p和q的地址。不是a和b的。注意注意)
传给那个函数。
函数里。
定义一个临时的指针变量。
把p和q的值做了交换。
*r=*s中。r和s是p和q的地址。
所以*r和*s就是p和q的值。
这样打印p和q指向内存的值就是交换后的值。即。2,1

交换的是p和q的值

还不懂的话发邮件给我吧。haoxing168@163.com

TRACE一下就知道啦

结果是:
2,1

该程序完成的是两个数的交换
输出的是 :2 1
函数传递的是p和q的地址
PQ是指向ab的指针
如果不这样那就不能完成交换
这就是程序中的变量的作用与的问题
你可以看看
用指针实际上就是在一个地址上操作

2,1,因为进行了地址的传递