谁帮我剖析一道c++程序,写出每一步的过程及最后结果!!

#include<iostream.h>intx=3;voidf(int);voidmain(){f(x);cout<<"x="<<x<<endl;}voidf(intx... #include<iostream.h>
int x=3;
void f(int);
void main()
{
f(x);
cout<<"x="<<x<<endl;
}
void f(int x)
{
x=5;
}
我运行的结果是“x=3”不知道是对的吗,尤其最后的void f(int x)
{
x=5;
}
是什么意思??亟待解决!!
展开
 我来答
liujq007
2008-12-28 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1082万
展开全部
对的,因为全局变量x 初始化为3,虽然调用了f()函数,但只是形参改变了
就是先把3传递给形参x,然后形参执行x=5;但这个仅仅是形参改变了

对原来外面的那个x不影响(实参),注意此x非彼x

如果用引用的话
void f(int &x)
{
x=5;
}
那么输出的就是5了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzhenrao
2008-12-28 · 超过40用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:148万
展开全部
首先告诉你,结果就是x=3;f这个函数如果没错那就是毫无意义

f函数只是改变属于这个函数的变量x,并不能改变调用这个函数的对象变量

如果你想要得到的结果是x=5,那就把f()函数改成

int f(int x)
{
x=5;
return x;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
giegie1985
2008-12-28 · TA获得超过192个赞
知道答主
回答量:162
采纳率:0%
帮助的人:161万
展开全部
嗯,楼上们说的对!
void f(int x)
{
x=5;
}
这个形参x 生命期只在这对{}里,调用完该函数后,就结束了。形如你可以把他定义为int x1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iuhgnehz
2008-12-28 · TA获得超过3867个赞
知道小有建树答主
回答量:1323
采纳率:50%
帮助的人:856万
展开全部
这一个形参和值参的问题,你调用函数的时候只是调用了形参,或者说只是调用了一个值,并没有真正地对变量进行更改!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
世镶柳009
2008-12-28 · TA获得超过3017个赞
知道答主
回答量:2928
采纳率:0%
帮助的人:2486万
展开全部
void f(int x) 这里用的是值传递,不是引用传递!所以结果是3。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式