Wenn es um die Zuweisung und Initialisierung von Variablen geht, kann der Zeitpunkt je nach Umfang der Variablen variieren. Globale Variablen werden, wie erwähnt, beim Programmstart zugewiesen. Aber was ist mit statischen Variablen, die innerhalb von Funktionen deklariert werden?
Im gegebenen Szenario wird die statische Variable globalish beim Programmstart zugewiesen, ähnlich wie bei globalen Variablen. Dies liegt daran, dass statische Variablen eine längere Lebensdauer haben als lokale Variablen und ihre Werte auch dann beibehalten, wenn die Funktion, in der sie definiert sind, beendet wird.
Der Initialisierungszeitpunkt statischer Variablen beträgt wo es interessant wird. Im Gegensatz zu globalen Variablen werden statische Variablen beim Programmstart nicht initialisiert. Stattdessen werden sie nur initialisiert, wenn die Funktion, zu der sie gehören, zum ersten Mal aufgerufen wird. Dieses Verhalten wird im bereitgestellten Beispielprogramm deutlich:
void doSomething() { static bool globalish = true; // Initialization occurs here // ... }
In diesem Fall erfolgt die Initialisierung von globalish, wenn doSomething() zum ersten Mal ausgeführt wird, nicht zum Zeitpunkt des Programmstarts. Diese späte Initialisierung wird als „verzögerte Initialisierung“ bezeichnet.
Der Grund für diese verzögerte Initialisierung besteht darin, unnötige Initialisierungen für statische Variablen zu vermeiden, die möglicherweise nie verwendet werden. Wenn das Programm die Funktion, die die statische Variable deklariert, nie aufruft, spart es Speicher und Rechenzeit, indem es sie nicht initialisiert.
Das obige ist der detaillierte Inhalt vonWann werden statische Variablen initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!