#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;
}
偶然的你
TA贡献1841条经验 获得超3个赞
这个,你调用函数的时候是单纯的传值,并没有改变其数值,要改的话,把int x改为int &x应该就可以了。
还有我觉得你程序的最后结果应该是0,而不是20
- 3 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消