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

标签 c variables static

如果变量被初始化(i = 0),每次调用函数 func 时它仍然是 1,但是

当 i 未初始化时:

#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

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

最佳答案

该值未指定,所以一切正常。但是,每次调用 funct 时,可能会重用相同的内存,这样,就会重用相同的内存,并且 i 只是获取上次运行时留下的旧值.

关于c - 未初始化的局部变量是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54795902/

相关文章:

c++ - 如何防止产生__IO_putc?

c - 闰年问题,无法获取输入或.exe崩溃

c - 我应该使用 #include <file.h> 还是 "file.h"?

Java:接口(interface)是比静态类更好的面向对象设计吗?

android - Android 中的静态变量和低内存 - 几个问题

c - 如何避免C变量的多重定义?

C++:如何创建线程局部/全局变量

javascript - 传递给函数的变量不工作 JavaScript

php - x 时间后递增 PHP 变量

c - 理解静态 int 执行