【发布时间】:2011-05-26 13:09:20
【问题描述】:
当 C 说 global[/static] 变量的启动值为零时,是否也意味着结构成员? [global/static] 指针的初始值是多少?空?
【问题讨论】:
当 C 说 global[/static] 变量的启动值为零时,是否也意味着结构成员? [global/static] 指针的初始值是多少?空?
【问题讨论】:
是的,这是由 C99 6.7.8p10 指定的:
如果一个对象具有自动 存储持续时间未初始化 明确地,它的值是 不定。如果一个对象有 静态存储时间不 显式初始化,然后:
- 如果有指针类型,则初始化为空指针;
- 如果它有算术类型,则初始化为(正数或无符号数) 零;
- 如果它是一个聚合,每个成员都被初始化(递归)根据 遵守这些规则;
- 如果是联合,则初始化第一个命名成员(递归) 根据这些规则。
【讨论】:
是的,所有类型的静态变量都将设置为零。这包括指针 - NULL 指针是设置为零的指针。
【讨论】: