为了账号安全,请及时绑定邮箱和手机立即绑定

如下运行后,为什么结果是10而不是20?

如下运行后,为什么结果是10而不是20?

C
弑天下 2022-03-24 17:13:19
#include<stdio.h> main( ) { int x=0; func(x); printf("%d\n",x); } func(int x) {x=20;}
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

这个结果应该是0吧。
因为func函数传的是值,只是简单的将x的值传给func函数,然后在func函数中重修修改传入的值,将0修改为20,这一步只是在修改传入值的值,如果在f函数中答应x,结果会是20,但是此致仅仅是func函数x的值,不是主函数x的值,当fun函数执行完后,其栈空间销毁,自然不从在func函数的x,在主函数中答应的是main函数的x,它并未改变。为0;
如果fun函数传入的是x的地址,则在func函数中就改变了x的值。这是程序这样写:
#include<stdio.h>
main()
{
int x=0;
func(&x);
printf("%d\n",x);
}
func(int * x)
{
*x=20;
}


查看完整回答
反对 回复 2022-03-28
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

错,结果应该是0.
调用func(x)只是把实参x赋给func的形参,从func返回后,实参的值并没有修改到,所以x还是0.

查看完整回答
反对 回复 2022-03-28
?
偶然的你

TA贡献1841条经验 获得超3个赞

这个,你调用函数的时候是单纯的传值,并没有改变其数值,要改的话,把int x改为int &x应该就可以了。
还有我觉得你程序的最后结果应该是0,而不是20

查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信