当C表示全局变量的启动值为零时,它是否也表示结构成员?指针的初始值是多少?

j r*_*riv 0 c variables

当C表示全局[/ static]变量的启动值为零时,它是否也表示结构成员?什么是[全局/静态]指针的初始值?空值?

小智 8

是的,这是由C99 6.7.8p10指定的:

如果未显式初始化具有自动存储持续时间的对象,则其值不确定.如果未显式初始化具有静态存储持续时间的对象,则:

  • 如果它有指针类型,则将其初始化为空指针;
  • 如果它有算术类型,则初始化为(正或无符号)零;
  • 如果是聚合,则根据这些规则初始化(递归)每个成员;
  • 如果它是一个联合,则根据这些规则初始化(递归)第一个命名成员.