回 帖 发 新 帖 刷新版面

主题:static 变量


这是我在二级 C语言考试题上看到的一个题,分析的一部分是:for循环第二次调用函数 f(3) ,由于第一次调用 f 函数时 静态变量 a 的值由 2 加 1 变为 3 ,
我的疑问是:,既然定义了 a 为static 变量,为什么 a 的值会变呢? 麻烦哪位高手能指点一下,谢谢了!

原程序如下:
 
#include <stdio.h>
int a=1;
int f(int c)
{
    static int a=2;//为什么用了static 变量,此处 a 的值还是会变呢??
    c=c+1;
    return(a++)+c;
}
main()
{
    int i,k=0;
    for(i=0;i<2;i++)
    {
        int a=3;
        k+=f(a);
    }
    k+=a;
    printf("%d \n",k);
}


运行后结果是14 ,

回复列表 (共1个回复)

沙发

静态变量就是说这个变量的值只会在第一次走过这里的时候进行一次初始化,以后每次变化都保留上次变化最后的值
第一次调用过f()之后a的值取出(2)后自增(成为3),那么下一次调用的时候,a就不再会用2这个值初始化,而是上次的3了

我来回复

您尚未登录,请登录后再回复。点此登录或注册