梦U颜 发表于 2014-1-18 19:11:58

关于Static静态变量

#include<stdio.h>
long fac(int n)
{
static int f=1;
f=f*n;
return f;
}有没有哪位大神能告诉我,为什么这个能够完成(阶层)的处理,小弟想不通

machimilk 发表于 2014-1-18 21:51:10

本帖最后由 machimilk 于 2014-1-18 22:01 编辑

个人理解为加了static就相当于全局变量了
变量在每次函数调用之后会把销毁,下次调用时就是重定义的了。
静态的不会销毁,下次调用时还是这个。
你可以单步调试,注意各个变量的值
比如你这么写
int func1();
int func2();
void main()
{
        int a,b;
                a= func1();//这时候a=2
                a= func1();//a=3
                a= func1();//a=4
                b=func2();//b=2
                b=func2();//b=2
                b=func2();//b=2
}
int func1()
{
          static int i=1;//第二次到这里i是以前赋值过的i
                i++;
                return i;
}
int func2()
{
        int j=1;
        j++;
        return j;
}
大概明白了吧

梦U颜 发表于 2014-1-25 19:48:54

我明白了,谢谢
页: [1]
查看完整版本: 关于Static静态变量