Suche…


Einfacher Blockumfang

Der Gültigkeitsbereich einer Variablen in einem Block { ... } beginnt nach der Deklaration und endet am Ende des Blocks. Wenn es einen verschachtelten Block gibt, kann der innere Block den Gültigkeitsbereich einer im äußeren Block deklarierten Variablen verbergen.

{
    int x = 100;
    //   ^
    //   Scope of `x` begins here
    //
}   // <- Scope of `x` ends here

Wenn ein verschachtelter Block innerhalb eines äußeren Blocks beginnt, verbirgt eine neue deklarierte Variable mit demselben Namen, die zuvor in der äußeren Klasse war, die erste.

{
    int x = 100;

    {
        int x = 200;

        std::cout << x;  // <- Output is 200
    }

    std::cout << x;  // <- Output is 100
}

Globale Variablen

Um eine einzelne Instanz einer Variablen zu deklarieren, auf die in verschiedenen Quelldateien zugegriffen werden kann, ist es möglich, sie mit dem Schlüsselwort extern im globalen Bereich zu extern . Dieses Schlüsselwort sagt dem Compiler, dass irgendwo im Code eine Definition für diese Variable vorhanden ist, sodass sie überall verwendet werden kann und dass alle Schreib- / Lesevorgänge an einer Stelle des Speichers erfolgen.

// File my_globals.h:

#ifndef __MY_GLOBALS_H__
#define __MY_GLOBALS_H__

extern int circle_radius; // Promise to the compiler that circle_radius 
                          // will be defined somewhere

#endif

// File foo1.cpp:

#include "my_globals.h"

int circle_radius = 123; // Defining the extern variable

// File main.cpp:

#include "my_globals.h"
#include <iostream>

int main()
{
    std::cout << "The radius is: " << circle_radius << "\n";'
    return 0;
}

Ausgabe:

The radius is: 123


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow