c语言指针程序题,程序如下,答案是3,6。我想知道为什么答案是3,6而不是6,3?希望您能帮我详细解答一下。

#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}voidmain(){inta=3,b=6,*x=&a,... #include <stdio.h>
void fun(int * a,int * b)
{
int *k;
k=a;a=b;b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d,%d”,a,b);
}
展开
 我来答
无忧网事
2011-05-29 · TA获得超过899个赞
知道小有建树答主
回答量:676
采纳率:100%
帮助的人:284万
展开全部
呵呵,你被主函数中的a,b和子函数中的a,b所混淆了!
(1)主函数中的a,b是变量名,a=3,b=6,内容为3和6 。
(2)子函数中的a,b是指针变量,是指向整型变量的指针变量【(int * a,int * b)】。k也是指针变量,调用子函数fun时【fun(x,y)】,是将a,b的地址传过来了,不是a,b的值!在子函数内部,
k=a;a=b;b=k;交换的是就是的地址(注意:这里的a,b实际上是x,y,也就是主函数中的&a,&b),也就是将主函数中的变量地址交换了而已,就是将变量换个地方而已,变量名和变量的值都没有变!
指针变量是C语言中比较难的一个知识点,尤其是指向指针的指针、指向多维数组的指针。希望你多看书,多练习,认真领会。
nuaalsh
2011-05-29
知道答主
回答量:21
采纳率:40%
帮助的人:8.9万
展开全部
在fun函数中k=a;a=b;b=k;只是指针地址交换了,而实际空间的内容没有交换。当fun函数结束之后,a,b,k被释放,对main中的a,b没影响
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2011-05-29 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4563万
展开全部
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y); //这个函数将变量a,b的地址传给子程序fun,fun交换传过去的两个值,并不改变a,b的值。
printf(“%d,%d”,a,b);//原样输出a,b的值。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qimingxingwen
2011-05-29 · TA获得超过432个赞
知道小有建树答主
回答量:269
采纳率:50%
帮助的人:182万
展开全部
#include <stdio.h>
void fun(int * a,int * b)
{
int k;
k=*a;*a=*b;*b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d,%d\n",a,b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式