C++ 静态变量的初始化时机是在程序启动时,也就是在 main()
函数执行之前。当一个程序启动时,静态变量的初始化会按照它们在代码中出现的顺序依次进行。值得注意的是,静态局部变量(static local variable)在第一次进入其定义所在的函数时初始化,但仅初始化一次。
以下是一个关于静态变量初始化的示例:
#include <iostream>
void foo() {
static int x = 10; // 静态局部变量
std::cout << "x = "<< x << std::endl;
}
int main() {
foo(); // 输出 x = 10
foo(); // 输出 x = 10,不再重新初始化
return 0;
}
在这个例子中,x
是一个静态局部变量,它在 foo()
函数内定义。当第一次调用 foo()
时,x
会被初始化为 10。当再次调用 foo()
时,x
的值保持不变,因为它已经被初始化了。