通常必须初始化静态对象吗?

时间:2017-09-15 22:53:06

标签: c programming-languages computer-science lifetime storage-duration

来自编程语言语用学,由Scott

  

对象生命周期通常对应于三个主体之一   存储分配机制,用于管理对象的空间:

     
      
  1. 静态对象被赋予一个绝对地址,该地址在整个程序的执行过程中保留。

  2.   
  3. 堆栈对象以后进先出顺序分配和释放,通常与子程序调用和返回一起使用。

  4.   
  5. 可以在任意时间分配和释放堆对象。它们需要更通用(且昂贵)的存储管理   算法
  6.   

例如,在C中,必须使用常量表达式(可在编译时计算的表达式)初始化静态对象。

我不确定其他语言是否是这种情况,甚至其他语言也有静态对象。

通常,必须初始化静态对象吗?初始化时,是否必须使用可在编译时计算的表达式对它们进行初始化?

通过初始化,我指的是显式或隐式(即通过语言实现自动完成),而不是uninitailziation。 所以重新解释一下我的问题:通常情况下,静态对象是否可以被程序或编译器保持未初始化状态?

感谢。

1 个答案:

答案 0 :(得分:3)

static变量将自动初始化为“零”,除非您明确初始化它。

除了那个和生命周期或链接部分之外,它与任何其他变量没有什么不同,这意味着你可以像初始化任何其他变量一样初始化它。