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:
- Innerhalb einer Funktion oder eines BlocksLokaleVariable
- Außerhalb aller FunktionenglobaleVariable
- 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
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
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 VariablenBeispiel
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
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:
| Datentypen | Standardwerte 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