{ printf("%d %d", *x, *y); *x=3; *y=4;}

 我来答
慈兰夕凰
2019-08-16 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:933万
展开全部
注意函数参数传递方式,是传递的变量指针,不是值传递。
假设内存中有存储单元A和B,main()中的变量x和y分别保存在这两个存储单元中,即x->A,y->B。x=(A)=1,y=(B)=2
函数fun()的参数传递方式是传递存储单元的地址,因此在fun()函数中,是x->B,y->A,则*x=(B)=2,*y=(A)=1,当运行到*x=3;*y=4时,实际上是令(B)=3,(A)=4。
回到main()后,由于主程序中仍然是x->A,y->B的关系,所以此时x=4,y=3
这个问题主要是理解变量的作用域和指针。
澄文玉文环
2020-01-28 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:1022万
展开全部
考查的是参数传递,及指针应用。
fun(&y,&x);
参数为地址传送,void
fun(int
*x,int
*y)接收的是(x=&y,y=&x)
输出是y
x也就是2
1
将地址赋的值更改为*x=3,*y=4;相当于主函数的y=3,x=4.
返回主函数输出的是4
3
故最后输出结假果:2143
答案是a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
位同书戴秋
2020-03-23 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:1214万
展开全部
fun(&y,&x);
执行后,y=3,x=4
void
fun(int
*x,
int
*y)
//调用时是fun(&y,&x),先出入y,后传入x的
{
printf("%d
%d",
*x,
*y);
*x=3;
*y=4;}
//*x指向main中的y的地址,*y指向main中的x的地址
所以最后输出2
14
3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
承松兰濯缎
2019-08-17 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1042万
展开全部
楼上一改就很明白了。
fun里的x,y只是形参,只与定义或者声明时的变量名匹配。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式