首页 >后端开发 >C++ >C 中的函数级静态变量何时以及如何分配和初始化?

C 中的函数级静态变量何时以及如何分配和初始化?

Patricia Arquette
Patricia Arquette原创
2024-11-18 02:12:02246浏览

When and How Are Function-Level Static Variables in C   Allocated and Initialized?

函数级静态变量的分配和初始化

C 中函数级静态变量是一种在整个生命周期中持续存在的数据类型的程序。与全局变量不同,它们不是在全局范围内声明的,而是在函数范围内声明的。这引发了关于何时分配和初始化这些变量的疑问。

与在程序开始时分配和初始化的全局声明变量相比,函数级静态变量在第一次调用时分配和初始化到定义它们的函数。这在提供的示例代码中很明显:

void doSomething() {
  static bool globalish = true;
}

静态变量 globalish 在第一次调用函数 doSomething 时初始化。在此之前,其值是未定义的。这个结果通过一个测试程序得到了证实,该程序打印了与不同范围内实例化的对象的创建和销毁相关的事件。

这种行为归因于静态变量存储在内存的静态区域中在对同一函数的所有调用之间共享。因此,除非在函数内显式修改,否则初始值在调用之间保持不变。

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

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