我有一个关于静态变量的简单问题。如果我在函数中声明了一个静态变量:
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
值的位置。是一个静态变量,如全局变量。
答案 0 :(得分:3)
该函数在返回时不会在i
内释放fun()
。 i
的存储与全局变量位于同一区域 - 但它不是全局变量。它只能在定义它的函数fun()
内访问。它与任何全局变量i
或在任何其他函数(在任何源文件中)内是静态的任何其他变量i
分开,或者与源中的文件范围静态变量i
分开文件中定义了fun()
。它只有程序一生。
答案 1 :(得分:1)
据我所知,该函数将在返回 - 否后解除分配。我认为你的假设是错误的!
从函数返回后, static
个变量不会被释放。
它存储在哪里? - static
个变量存储在&#34;数据部分&#34;或&#34;数据存储器&#34;。
生命 - 当程序加载到RAM中时static
变量的生命周期开始,并在程序执行完成时结束!