关于静态变量,我有一个简单的问题。如果我在函数中声明了一个静态变量:
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值存储在哪里。是像全局变量一样的静态变量。
发布于 2014-09-01 06:20:22
该函数在返回时不会在i中释放fun()。i的存储区域与全局变量相同,但它不是全局变量。它只能在定义它的函数fun()中访问。它与任何全局变量i或在任何其他函数(在任何源文件中)内是静态的任何其他变量i都是分开的,或者与定义fun()的源文件中的文件范围静态变量i分离。它的寿命和程序一样长。
发布于 2014-09-01 06:21:39
如我所知,函数将在返回- No后重新定位。我认为你的假设是错误的!
static变量在从函数返回后不会被释放。
存储在哪里?- static变量存储在“数据部分”或“数据内存”中。
--当程序加载到内存中时,static变量的生命周期开始,程序执行结束时,static变量的生命周期结束!
https://stackoverflow.com/questions/25599854
复制相似问题