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

#include<stdio.h> main( ) { int x=0; func(x); printf("%d\n",x); } func(int x) {x=20;}

弑天下
浏览 126回答 3
3回答

一只斗牛犬

这个结果应该是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;}

蝴蝶不菲

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

偶然的你

这个,你调用函数的时候是单纯的传值,并没有改变其数值,要改的话,把int x改为int &x应该就可以了。还有我觉得你程序的最后结果应该是0,而不是20
打开App,查看更多内容
随时随地看视频慕课网APP