首页  >  文章  >  后端开发  >  C 中静态变量和全局变量如何初始化?

C 中静态变量和全局变量如何初始化?

DDD
DDD原创
2024-11-08 07:05:021065浏览

How are Static and Global Variables Initialized in C  ?

C 中静态和全局变量的初始化

在 C 中,具有命名空间作用域的静态和全局对象的初始化方式与 C 中不同。全面解释:

初始化阶段:

C 分三个阶段初始化这些变量:

  1. 零初始化:设置所有静态对象到 0。
  2. 静态初始化:初始化具有静态初始化器的对象。
  3. 动态初始化:初始化需要执行代码执行初始化的对象(非静态对象)。

给定变量的初始化:

在您的代码片段中:

  • global_int1 在静态初始化期间初始化为 5。
  • global_int2 是零初始化期间零初始化。
  • 静态初始化期间 static_int1 初始化为 4。
  • 零初始化期间 static_int2 零初始化。

存储和初始化值的管理:

在编译期间,初始化值存储在可执行文件的“数据”段中,除非它们是常量。在这种情况下,它们被放置在“text”段中。

系统将“data”段加载到内存中,使用静态初始化器初始化静态变量。没有初始化器或动态初始化器的变量放置在“bss”段中,该段在代码执行之前被系统清零。

C 11 的附加说明

C 11引入了constexpr,允许一些用户定义的函数进行静态初始化。还引入了线程局部变量,这使得初始化过程进一步复杂化。

以上是C 中静态变量和全局变量如何初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn