C++问题,高手来______________________

#include<stdio.h>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}voidmain(){intx=3,y=5,*p=&x,... #include <stdio.h>
void fun(int *a,int *b)
{int *c;
c=a;a=b;b=c;
}
void 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)
}
程序运行后的结果是_________;
为什么?详细点,在线等,谢谢大家了
展开
 我来答
baihuandu
2012-10-14
知道答主
回答量:14
采纳率:0%
帮助的人:13.9万
展开全部
3,5,3,5;

上面最后一句少打了一个";" 分号;
分析原因:你的函数fun只是交换了两个指针变量指向的地址,并没有交换指针指向地址的值。也就是函数执行后你只是让a指向了b,b指向了a,它们原来指的东西都没有变,并且你这个修改指向在函数返回后又不会起作用,因为a b作用域的问题。

你如果想交换a b指向的值的内容,要修改fun 改为:
void fun(int *a,int *b)
{
int c;
c=*a;*a=*b;*b=c;
}

就行了
百度网友26ad406
2012-10-14 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1079万
展开全部
3,5,3,5
交换形参,实参没变
追问
就是一定是实参是指针,才会有改变?????
追答
void fun(int *a,int *b)
{int c;
c=*a;*a=*b;*b=c;
}
改成这样,交换的是两个指针所指的数 这样就变了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式