📜  C中静态变量的默认值是什么?

📅  最后修改于: 2021-05-26 02:30:53             🧑  作者: Mango

在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基础课程》。