C语言输出问题,请问下面程序的输出结果是什么,并解释为什么是该结果:

#include <stdio.h>

void Func(int x)
{
x = 20;
}

main()
{
int x=10;

Func(x);
printf("%d\n", x);
}

第1个回答  2009-12-04
我给你解释的详细点吧。
1.你的这个写法,只是单纯的值传递,只是把10这个数字传给了 Func,Func中又开辟了一块空间名字也是X,但是地址和MAIN函数中的不同,所以你修改X=20只是修改了另一个地址的东西。意思就是有两户人家都叫张三,但是家庭地址不同。
2.如果你想修改MAIN中传过去的值,就要使用引用传值,将X的地址传过去,这样在Func中修改的就是MAIN中X的值,写法如下:
void Func(int &x)
{
x = 20;
}
第2个回答  2009-12-04
输出结果是10

程序是从主函数开始运行。即从main()开始往下运行
先x=20;
接着运行自定义函数 Func(x);
此时x=10
然后就输出了,所以x=10
第3个回答  2009-12-04
10
x传入func后会复制一份,因此x = 20改变的是复制的那一份,而不是main里面的x变量
如果你要直接改变main里面的x变量,要用地址参数传递的方式本回答被提问者采纳
第4个回答  2009-12-04
变量的有效期,在func()里的x只在其内部有效,在main(0)函数里无效,所以是10
第5个回答  2009-12-04
10
func(x)没有返回值
所以X不变
还是10
相似回答