当涉及到变量分配和初始化时,时间可能会根据变量的范围而有所不同。如前所述,全局变量是在程序启动时分配的。但是函数内声明的静态变量呢?
在给定的场景中,静态变量 globalish 在程序启动时分配,类似于全局变量。这是因为静态变量的生命周期比局部变量长,即使它们定义的函数退出,静态变量的值也能保持不变。
静态变量的初始化时机是事情变得有趣的地方。与全局变量不同,静态变量不会在程序启动时初始化。相反,它们仅在首次调用它们所属的函数时才进行初始化。这种行为在提供的示例程序中很明显:
void doSomething() { static bool globalish = true; // Initialization occurs here // ... }
在这种情况下,globalish 的初始化发生在 doSomething() 第一次执行时,而不是在程序启动时。这种延迟初始化被称为“延迟初始化”。
这种延迟初始化的原因是为了避免对可能永远不会使用的静态变量进行不必要的初始化。如果程序从不调用声明静态变量的函数,则可以通过不初始化它来节省内存和计算时间。
以上是静态变量什么时候初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!