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可以在同名的情况下不断定义并且存储数值?而且输出时是倒叙输出? 展开
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可以在同名的情况下不断定义并且存储数值?而且输出时是倒叙输出? 展开
展开全部
#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的实体,而不是表面上看到的只有一个。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询