在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()之前,必须初始化所有具有静态存储持续时间的对象(设置为初始值)。因此,在转换时未知的值不能用于静态变量的初始化。

 

在C中初始化静态变量-IDC帮帮忙