未初始化的局部变量是静态的吗?

时间:2019-02-20 22:00:37

标签: c variables static

如果变量已初始化(i = 0),则每次调用函数func时仍为1

未初始化时:

#include <stdio.h>

int funct(void);
int main(void)
{
    funct();
    funct();
    funct();

    return 0;
}

int funct(void)
{
    int i;  
    static int j = 0;

    i++;
    j++;

    printf(" i = %d         j = %d\n", i, j);
}

输出为

 i = 1      j = 1
 i = 2      j = 2
 i = 3      j = 3

我不明白为什么我的变量表现得像静态变量!

1 个答案:

答案 0 :(得分:4)

该值是未指定的,因此一切正常。但是,很可能每次调用funct都会重用相同的内存,这样,相同的内存就会被重用,而i只是从上一次运行中获得的旧值被提取。