C语言中局部静态变量的作用域

18 浏览
0 Comments

C语言中局部静态变量的作用域

这个问题已经有了答案

“static”在C语言中是什么意思?

我对静态变量有一个简单的问题。如果我在一个函数中声明了一个静态变量:

void main()
{
    int k = 0
    while(k<=4)
    {
        fun();
        k++;
    }
}
int fun()
{
    static int i=5;
    i++;
    printf(Value %d\t", i);
    return 0;
}

我知道,函数在返回后会被释放。但是i的值存储在哪里呢?静态变量是否像全局变量一样?

admin 更改状态以发布 2023年5月23日
0
0 Comments

据我所知,函数在返回之后会被释放 — 不会。我觉得你的假设是错误的!

static变量在函数返回后不会被释放。

它存储在哪里?static变量存储在“数据段”或“数据内存”中。

寿命static变量的寿命始于程序被加载到RAM中,直到程序执行结束!

0
0 Comments

此函数在返回时不会释放 ii 的存储空间与全局变量处于同一区域,但它并不是全局变量。只有在定义了它的函数 fun() 中才可以访问它。它与任何全局变量 i 或任何其他在任何函数(在任何源文件中)中静态的变量 i 或在定义 fun() 的源文件中静态的文件作用域变量 i 是分开的。它的寿命与程序一样长。

0