C++ Gültigkeitsbereich von Variablen

Im Allgemeinen gibt es drei Stellen, an denen Variablen definiert werden können:

  • Variablen, die innerhalb einer Funktion oder eines Codeblocks deklariert werden, heißenlokale Variablen。

  • Variablen, die in der Definition von Funktionsparametern deklariert werden, heißenformale Parameter。

  • Variablen, die außerhalb aller Funktionen deklariert werden, heißenglobale Variablen。

Der Gültigkeitsbereich ist ein Bereich eines Programms. Der Gültigkeitsbereich von Variablen kann in die folgenden Typen unterteilt werden:

  • Lokaler Gültigkeitsbereich: Variablen, die innerhalb einer Funktion deklariert werden, haben lokalen Gültigkeitsbereich; auf sie kann nur innerhalb der Funktion zugegriffen werden. Lokale Variablen werden bei jedem Aufruf der Funktion erstellt und zerstört, nachdem die Funktion die Ausführung beendet hat.

  • Globaler Gültigkeitsbereich: Variablen, die außerhalb aller Funktionen und Codeblöcke deklariert werden, haben globalen Gültigkeitsbereich; auf sie kann von jeder Funktion im Programm zugegriffen werden. Globale Variablen werden beim Start des Programms erstellt und zerstört, wenn das Programm endet.

  • Block-Gültigkeitsbereich: Variablen, die innerhalb eines Codeblocks deklariert werden, haben Block-Gültigkeitsbereich; auf sie kann nur innerhalb des Codeblocks zugegriffen werden. Variablen mit Block-Gültigkeitsbereich werden bei jeder Ausführung des Codeblocks erstellt und zerstört, nachdem der Codeblock die Ausführung beendet hat.

  • Klassen-Gültigkeitsbereich: Variablen, die innerhalb einer Klasse deklariert werden, haben Klassen-Gültigkeitsbereich; auf sie kann von allen Memberfunktionen der Klasse zugegriffen werden. Die Lebensdauer von Variablen mit Klassen-Gültigkeitsbereich ist dieselbe wie die Lebensdauer der Klasse.

Hinweis:Wenn eine im inneren Gültigkeitsbereich deklarierte Variable denselben Namen wie eine Variable im äußeren Gültigkeitsbereich hat, überschreibt die Variable im inneren Gültigkeitsbereich die Variable im äußeren Gültigkeitsbereich.

Lokale Variablen

Variablen, die innerhalb einer Funktion oder eines Codeblocks deklariert werden, werden als lokale Variablen bezeichnet. Sie können nur von Anweisungen innerhalb der Funktion oder des Codeblocks verwendet werden. Das folgende Beispiel verwendet lokale Variablen:

Beispiel

#include <iostream> using namespace std; int main () { // Lokale Variablendeklaration int a, b; int c; // tatsächliche Initialisierung a = 10; b = 20; c = a + b; cout << c; return 0; }

Globale Variablen

Variablen, die außerhalb aller Funktionen definiert sind (normalerweise am Anfang des Programms), werden als globale Variablen bezeichnet. Die Werte globaler Variablen sind während der gesamten Lebensdauer des Programms gültig.

Auf globale Variablen kann von jeder Funktion zugegriffen werden. Das heißt, sobald eine globale Variable deklariert ist, ist sie im gesamten Programm verfügbar. Das folgende Beispiel verwendet globale Variablen und lokale Variablen:

Beispiel

#include <iostream> using namespace std; // globale Variablendeklaration int g; int main () { // Lokale Variablendeklaration int a, b; // tatsächliche Initialisierung a = 10; b = 20; g = a + b; cout << g; return 0; }

In einem Programm können lokale Variablen und globale Variablen denselben Namen haben, aber innerhalb einer Funktion überschreibt der Wert der lokalen Variable den Wert der globalen Variable. Hier ist ein Beispiel:

Beispiel

#include <iostream> using namespace std; // globale Variablendeklaration int g = 20; int main () { // Lokale Variablendeklaration int g = 10; cout << g; return 0; }

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

10

Initialisierung von lokalen Variablen und globalen 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 mit den folgenden Werten:

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

Variablen korrekt zu initialisieren ist eine gute Programmierpraxis; andernfalls kann das Programm in manchen Fällen unerwartete Ergebnisse liefern.


Der Blockbereich bezieht sich auf Variablen, die innerhalb eines Codeblocks deklariert werden:

Beispiel

#include <iostream>

int main() {
    int a = 10;
    {
        int a = 20;  // Variable im Blockbereich
        std::cout << "Blockvariable: " << a << std::endl;
    }
    std::cout << "Externe Variable: " << a << std::endl;
    return 0;
}

Im obigen Beispiel wird im inneren Codeblock eine Variable namens a deklariert, die denselben Namen wie die Variable a im äußeren Bereich hat. Die Variable a im inneren Bereich überschreibt die Variable a im äußeren Bereich. Beim Zugriff auf a im inneren Bereich wird 20 ausgegeben, während beim Zugriff auf a im äußeren Bereich 10 ausgegeben wird.

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

块变量: 20
外部变量: 10

Klassenbereich

Der Klassenbereich bezieht sich auf Variablen, die innerhalb einer Klasse deklariert werden:

Beispiel

#include <iostream>

class MyClass {
public:
    static int class_var;  // Variable im Klassenbereich
};

int MyClass::class_var = 30;

int main() {
    std::cout << "Klassenvariable: " << MyClass::class_var << std::endl;
    return 0;
}

Im obigen Beispiel wird eine klassenbezogene Variable namens class_var in der Klasse MyClass deklariert. Sie können den Klassennamen und den Bereichsauflösungsoperator::verwenden, um auf diese Variable zuzugreifen. Beim Zugriff auf class_var in der Funktion main() wird 30 ausgegeben.

类变量: 30
Weitere Erweiterungen