在 C 中,静态变量只能使用常量字面量进行初始化。例如,以下程序编译失败。
如果我们将程序更改为以下程序,则它可以正常工作。
原因很简单:所有具有静态存储持续时间的对象都必须在 main() 开始执行之前进行初始化(设置为其初始值)。因此,翻译时未知的值不能用于静态变量的初始化。
#include<stdio.h>
int initializer(void)
{
return 50;
}
int main()
{
static int i = initializer();
printf(" value of i = %d", i);
getchar();
return 0;
}
#include<stdio.h>
int main()
{
static int i = 50;
printf(" value of i = %d", i);
getchar();
return 0;
}