是一个未初始化的局部变量static? [重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

如果变量被初始化(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

我不明白为什么变量我的行为像静态变量!

c variables static
1个回答
4
投票

该值未指定,因此任何事情都会发生。但是,很可能每次调用funct时都会重复使用相同的内存,然后重复使用相同的内存,而i只会获取上一次运行中留下的旧值。

© www.soinside.com 2019 - 2024. All rights reserved.