帮忙解答
#include<iostream>using namespace std;
void fun(int i);
int main()
{
int n=2;
fun(n);
return 0;
}
void fun(int i)
{
static int x=1;
int y=1;
if (i>0)
{
++y;
++y;
cout<<x<<" "<<y;
fun(i-1);
}
}
为什么结果是2 2
3 2
而不是2 2
3 3 static int x=1;
int y=1;
这里,x是static类型,静态的,只初始化一次;但是y是个局部变量,当递归调用fun的时候,每一次都要重新定义一个y并初始化为1,所以,每次输出的结果,y都是2. n0noper 发表于 2016-3-21 09:49
static int x=1;
int y=1;
可以详细点吗,为什么局部变量一每次调用都初始化为1? 局部函数中定义static型变量,即静态变量,不同于默认的auto型。如果不加static,该变量在栈上,随着局部函数调用结束而释放栈空间。而静态变量相当于全局变量,在局部函数调用完毕后不会释放该变量的内存空间,所以初始化一次即可
页:
[1]