C语言中静态变量的初始化

在C语言中,静态变量只能使用常量文本进行初始化。例如,下面的程序编译失败。

null

#include<stdio.h>
int initializer( void )
{
return 50;
}
int main()
{
static int i = initializer();
printf ( " value of i = %d" , i);
getchar ();
return 0;
}


如果我们把程序改为following,那么它就可以正常工作。

#include<stdio.h>
int main()
{
static int i = 50;
printf ( " value of i = %d" , i);
getchar ();
return 0;
}


原因很简单:在开始执行main()之前,所有具有静态存储持续时间的对象都必须初始化(设置为其初始值)。因此,在转换时未知的值不能用于静态变量的初始化。

感谢Venki和Prateek的贡献。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享