c++函数中定义局部变量的问题

例如:voidf(inta,intn){intx;cin>>x;if(a==n){cout<<x;return;}f(a+1,n);return;}intmain(){i... 例如:
void f(int a,int n)
{
int x;
cin>>x;
if(a==n)
{cout<<x;
return;
}
f(a+1,n);
return;
}
int main()
{
int a=1,n=5;
f(a,n);
return 0;
} 请问我写的这个简单的程序,为什么x可以在同名的情况下不断定义并且存储数值?而且输出时是倒叙输出?
展开
 我来答
elichn
2014-05-04 · TA获得超过229个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:134万
展开全部
#include <iostream>
using namespace std;
void f(int a,int n)
{
    int x;
    cin>>x;
    if(a<n)f(a+1,n);
    cout<<x;
    return;
}
int main()
{
    int a=1,n=5;
    f(a,n);
    return 0;
}

如上,要倒叙输出的话你的程序要改一下。

原理很简单,虽然是同一个函数,递归调用,但每次调用时,都会分配新的栈空间来存放局部变量,所以,有很多个x的实体,而不是表面上看到的只有一个。

qipilangfour
2014-05-04 · TA获得超过232个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:127万
展开全部
网上学习、理解一下递归算行了,其实就是每一次调用f函数都是一次压栈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潘1
2014-05-04
知道答主
回答量:8
采纳率:0%
帮助的人:1.1万
展开全部
没怎么听懂。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式