Heim > Backend-Entwicklung > C++ > Wie werden statische und globale Variablen in C initialisiert?

Wie werden statische und globale Variablen in C initialisiert?

DDD
Freigeben: 2024-11-08 07:05:02
Original
1096 Leute haben es durchsucht

How are Static and Global Variables Initialized in C  ?

Initialisierung statischer und globaler Variablen in C

In C werden statische und globale Objekte mit Namespace-Gültigkeit anders initialisiert als in C. Hier ist eine ausführliche Erklärung:

Initialisierungsphasen:

C initialisiert diese Variablen in drei Phasen:

  1. Null-Initialisierung: Alle statischen Objekte werden gesetzt auf 0.
  2. Statische Initialisierung: Objekte mit statischen Initialisierern werden initialisiert.
  3. Dynamische Initialisierung: Objekte, die zur Initialisierung eine Codeausführung erfordern (nicht statische Objekte), werden initialisiert.

Initialisierung gegebener Variablen:

In Ihrem Codeausschnitt:

  • global_int1 wird während der statischen Initialisierung auf 5 initialisiert.
  • global_int2 ist Null-initialisiert während der Null-Initialisierung.
  • static_int1 wird während der statischen Initialisierung auf 4 initialisiert.
  • static_int2 wird während der Null-Initialisierung null-initialisiert.

Speicher und Verwaltung von Initialisierungswerten:

Während der Kompilierung werden Initialisierungswerte im „Daten“-Segment der ausführbaren Datei gespeichert, sofern sie nicht konstant sind. In diesem Fall werden sie im Segment „Text“ platziert.

Das System lädt das Segment „Daten“ in den Speicher und initialisiert statische Variablen mit statischen Initialisierern. Variablen ohne Initialisierer oder dynamische Initialisierer werden im „bss“-Segment platziert, das vom System vor der Codeausführung auf Null gesetzt wird.

Zusätzlicher Hinweis für C 11

C 11 führt constexpr ein und ermöglicht es einigen benutzerdefinierten Funktionen, statische Initialisierungen zu sein. Es werden auch lokale Thread-Variablen eingeführt, was die Initialisierungsverfahren weiter verkompliziert.

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage