Heim >Backend-Entwicklung >C++ >Wann und wie werden statische Variablen auf Funktionsebene in C zugewiesen und initialisiert?

Wann und wie werden statische Variablen auf Funktionsebene in C zugewiesen und initialisiert?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-18 02:12:02246Durchsuche

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

Zuweisung und Initialisierung von statischen Variablen auf Funktionsebene

Statische Variablen auf Funktionsebene in C sind ein Datentyp, der während der gesamten Lebensdauer bestehen bleibt des Programms. Im Gegensatz zu globalen Variablen werden sie nicht im globalen Bereich deklariert, sondern im Rahmen einer Funktion. Dies wirft Fragen darüber auf, wann diese Variablen zugewiesen und initialisiert werden.

Im Gegensatz zu global deklarierten Variablen, die zu Beginn des Programms zugewiesen und initialisiert werden, werden statische Variablen auf Funktionsebene beim ersten Aufruf zugewiesen und initialisiert auf die Funktion, in der sie definiert sind. Dies wird im bereitgestellten Beispielcode deutlich:

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

Die statische Variable globalish wird beim ersten Aufruf der Funktion doSomething initialisiert. Davor ist sein Wert undefiniert. Dieses Ergebnis wurde durch ein Testprogramm bestätigt, das Ereignisse im Zusammenhang mit der Erstellung und Zerstörung von Objekten ausgab, die in verschiedenen Bereichen instanziiert wurden.

Dieses Verhalten wird auf die Tatsache zurückgeführt, dass statische Variablen in einem statischen Speicherbereich gespeichert werden Wird von allen Aufrufen derselben Funktion gemeinsam genutzt. Somit bleibt der Anfangswert über alle Aufrufe hinweg bestehen, sofern er nicht explizit innerhalb der Funktion geändert wird.

Das obige ist der detaillierte Inhalt vonWann und wie werden statische Variablen auf Funktionsebene in C zugewiesen und initialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn