C语言中如何初始化静态变量?代码实例

2021年3月28日15:06:44 发表评论 968 次浏览

C语言中, 只能使用常量文字来初始化静态变量。例如, 以下程序编译失败。

#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;
}

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

感谢Venki和Prateek的贡献。

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

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: