我读到:静态变量仅初始化一次(与自动变量不同),并且在运行时将绕过静态变量的进一步定义。 从链接。
那么为什么我在下面给出的代码中收到“我没有声明”的错误。我编写的程序使得静态变量“i”仅在 c 等于 0 后第一次初始化,然后 c 增加。我只想知道静态变量是如何工作的,这就是为什么我只声明一次静态变量。我的问题是静态变量是否只在每个函数调用中声明一次,那么为什么我的代码没有运行,如果有必要在每次调用中声明它,那么为什么它不在每个函数调用中初始化。
#include<stdio.h>
int c=0;
int test()
{
if(c==0)
{
static int i=0;
}
c++;
i++;
if(i==5)
printf("%d\n",i);
else
test();
}
int main()
{
test();
return 0;
}