有以下程序 #include <stdio.h> void fun(int *a,int *b) {int *c; c=a;a=b;b=c; }

有以下程序#include<stdio.h>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x... 有以下程序
#include <stdio.h>
void fun(int *a,int *b)
{int *c; c=a;a=b;b=c; }
main()
{int x=3, y=5,*p=&x, *q=&y;
fun (p,q);printf(“%d,%d,”,*P,*q);
fun(&X, &y);printf(“%d,%d\n”;*p.*q);
}
程序运行后的输出结果是 A)3,5.5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3
为什么结果是B,难道地址传递,不能改变值吗?求高手详细解答,谢谢
展开
 我来答
百度网友a54624c
推荐于2018-03-26 · TA获得超过539个赞
知道小有建树答主
回答量:163
采纳率:100%
帮助的人:109万
展开全部
调用fun(p,q)时就是让a指向p指的地方,b指向q指的地方,函数内部是让c指向a指的地方,让a指向b指的地方,再让b指向c指的地方,你发现这里面没有改变p和q原来指向的地方,即p还是指向x,q还是指向y。fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊。
Suvine
2013-03-26 · TA获得超过204个赞
知道答主
回答量:363
采纳率:33%
帮助的人:92万
展开全部
参数传递是拷贝副本后传入的,指针地址交换不会是指向内容的交换,c=*a;*a=*b;*b=c 就可以交换值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弥微澜aA
2020-11-04
知道答主
回答量:1
采纳率:0%
帮助的人:657
展开全部
4.[单选题] 有以下程序 void fun(int *a,int *b) { int *c; c=a;a=b;b=c; } main() { int x=3,y=5,*p=&x,*q=&y; fun(p,q); printf("%d,%d,",*p,*q); fun(&x,&y); printf("%d,%d\n",*p,*q); } 程序运行后的输出结果是()。
A3,5,5,3
B3,5,3,5
C5,3,3,5
D5,3,5,3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-26
展开全部
是啊,这个程序把地址传来传去,根本没有涉及到什么运算,数值到哪里改变去??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式