在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