在C中,如果未明确初始化具有静态存储持续时间的对象,则:
—如果具有指针类型,则将其初始化为NULL指针;
—如果具有算术类型,则将其初始化为(正数或无符号)零;
—如果是聚合,则根据这些规则(递归)初始化每个成员;
—如果它是一个联合,则将根据这些规则初始化(递归)第一个命名成员。
例如,以下程序打印:
g的值= 0
sg = 0
s的值= 0
#include
int g; //g = 0, global objects have static storage duration
static int gs; //gs = 0, global static objects have static storage duration
int main()
{
static int s; //s = 0, static objects have static storage duration
printf("Value of g = %d", g);
printf("\nValue of gs = %d", gs);
printf("\nValue of s = %d", s);
getchar();
return 0;
}
参考:
C99标准
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。