首页 > 后端开发 > C++ > C 函数中的静态变量能存在多久?

C 函数中的静态变量能存在多久?

Patricia Arquette
发布: 2024-12-30 14:03:22
原创
1012 人浏览过

How Long Do Static Variables in C   Functions Live?

C 函数中静态变量的生命周期

在函数作用域内将变量声明为静态可确保其仅初始化一次,从而在整个过程中保持其值函数调用。了解其精确的生命周期至关重要。

静态变量何时创建和销毁?

函数中的静态变量的生命周期从第一次遇到它们的声明开始程序终止。这意味着:

  • 构造函数在初始声明期间调用。
  • 析构函数在程序终止或变量超出范围(例如函数退出)时调用。

跟踪构建/销毁顺序

确定静态变量的构造和销毁的顺序至关重要,尤其是在多线程环境中。标准规定静态对象的析构函数按照构造完成的相反顺序执行。

实现示例

考虑以下代码代码片段:

struct emitter {
    string str;
    emitter(const string& s) : str(s) { cout << "Created " << str << endl; }
    ~emitter() { cout << "Destroyed " << str << endl; }
};

void foo(bool skip_first) {
    if (!skip_first)
        static emitter a("in if");
    static emitter b("in foo");
}

int main(int argc, char*[])
{
    foo(argc != 2);
    if (argc == 3)
        foo(false);
}
登录后复制

输出:

C:>sample.exe
Created in foo
Destroyed in foo
C:>sample.exe 1
Created in if
Created in foo
Destroyed in foo
Destroyed in if
C:>sample.exe 1 2
Created in foo
Created in if
Destroyed in if
Destroyed in foo
登录后复制

这演示了静态变量的生命周期和构造/销毁顺序。

以上是C 函数中的静态变量能存在多久?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板