C Gültigkeitsbereichsregeln

In jeder Art von Programmierung ist der Gültigkeitsbereich der Bereich, in dem in einem Programm definierte Variablen existieren; außerhalb dieses Bereichs kann nicht auf die Variablen zugegriffen werden. In der Sprache C gibt es drei Stellen, an denen Variablen deklariert werden können:

  1. Innerhalb einer Funktion oder eines BlocksLokaleVariable
  2. Außerhalb aller FunktionenglobaleVariable
  3. InFormIn den Funktionsparameterdefinitionen

Sehen wir uns an, waslokaleVariablen,globaleVariablen undformaleParameter.

Lokale Variablen

In einer Funktion oder einem Block deklarierte Variablen werden lokale Variablen genannt. Sie können nur von Anweisungen innerhalb dieser Funktion oder dieses Codeblocks verwendet werden. Lokale Variablen sind außerhalb der Funktion nicht bekannt. Hier ist ein Beispiel für die Verwendung lokaler Variablen. Hier sind alle Variablen a, b und c lokale Variablen der main()-Funktion.

Beispiel

#include <stdio.h> int main () { /*Lokale Variablendeklaration*/ int a, b; int c; /*tatsächliche Initialisierung*/ a = 10; b = 20; c = a + b; printf ("Wert von a = %d, b = %d und c = %d\n", a, b, c); return 0; }

Globale Variablen

Globale Variablen werden außerhalb von Funktionen definiert, normalerweise am Anfang des Programms. Globale Variablen bleiben während des gesamten Programmlebenszyklus gültig, und auf sie kann innerhalb jeder Funktion zugegriffen werden.

Auf globale Variablen kann von jeder Funktion zugegriffen werden. Das heißt, nachdem eine globale Variable deklariert wurde, ist sie im gesamten Programm verfügbar. Das Folgende ist ein Beispiel für die Verwendung globaler und lokaler Variablen:

Beispiel

#include <stdio.h> /*Globale Variablendeklaration*/ int g; int main () { /*Lokale Variablendeklaration*/ int a, b; /*eigentliche Initialisierung*/ a = 10; b = 20; g = a + b; printf ("Wert von a = %d, b = %d und g = %d\n", a, b, g); return 0; }

In einem Programm können lokale Variablen und globale Variablen denselben Namen haben, aber innerhalb einer Funktion wird, wenn zwei Namen gleich sind, der Wert der lokalen Variable verwendet, und die globale Variable wird nicht verwendet. Hier ist ein Beispiel:

In einem Programm, lokale Variablen und globale Variablen

Beispiel

#include <stdio.h> /*Globale Variablendeklaration*/ int g = 20; int main () { /*Lokale Variablendeklaration*/ int g = 10; printf ("Wert von g = %d\n", g); return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

value of g = 10

Formale Parameter

Funktionsparameter, d. h. formale Parameter, werden innerhalb dieser Funktion als lokale Variablen behandelt, und wenn sie denselben Namen wie globale Variablen haben, haben sie Vorrang. Hier ist ein Beispiel:

Beispiel

#include <stdio.h> /*Globale Variablendeklaration*/ int a = 20; int main () { /*Lokale Variablendeklarationen in der main-Funktion*/ int a = 10; int b = 20; int c = 0; int sum(int, int); printf ("Wert von a in main() = %d\n", a); c = sum( a, b); printf ("Wert von c in main() = %d\n", c); return 0; } /*Funktion zum Addieren zweier Ganzzahlen*/ int sum(int a, int b) { printf ("Wert von a in sum() = %d\n", a); printf ("Wert von b in sum() = %d\n", b); return a + b; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

Der Unterschied zwischen globalen Variablen und lokalen Variablen im Speicher:

  • Globale Variablen werden im globalen Speicherbereich des Arbeitsspeichers abgelegt und belegen statische Speichereinheiten;
  • Lokale Variablen werden im Stack gespeichert, und nur wenn die Funktion, in der sie sich befinden, aufgerufen wird, werden für die Variablen dynamisch Speichereinheiten zugewiesen.

Weitere Informationen finden Sie unter:Verwendung von static in C/C++: globale Variablen und lokale Variablen

Initialisierung lokaler und globaler Variablen

Wenn eine lokale Variable definiert wird, initialisiert das System sie nicht; Sie müssen sie selbst initialisieren. Wenn eine globale Variable definiert wird, initialisiert das System sie automatisch, wie unten gezeigt:

DatentypenStandardwerte initialisieren
int 0
char '\0'
float 0
double 0
Zeiger NULL

Variablen korrekt zu initialisieren ist eine gute Programmierpraxis; andernfalls kann das Programm manchmal unerwartete Ergebnisse liefern, da nicht initialisierte Variablen Müllwerte verursachen können, die bereits an Speicherstellen vorhanden sind.

Weitere Erweiterungen