【发布时间】:2014-10-25 07:54:23
【问题描述】:
我有一个关于静态变量的简单问题。如果我在函数中声明了一个静态变量:
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 值存储在哪里。是像全局变量一样的静态变量。
【问题讨论】:
-
Is static is like global variable.不!!!!使用寿命相同。可见度不同。 -
请先修正语法错误,再去哲学问题:)
-
C 规范没有说明变量必须存储在哪里,只是局部静态变量的生命周期贯穿整个程序。但是,编译器通常将局部静态变量与全局变量一起存储。
-
还有那个代码有一个无限循环,请先处理这些事情
-
'很好奇你有
void main(),它是非标准的,只在带有Microsoft C 编译器的Microsoft Windows 上有效,你有int fun()并且不使用它的返回值。拥有int main(void)和void fun(void)会更正统——尽管如果你更改了它的签名,你必须在main()之前定义或声明fun()(尽管诸如MSVC 之类的C89 编译器不介意隐式int函数规则,但这是 25 年前的标准,15 年前的 C99 标准禁止函数的隐式声明)。
标签: c