C++-Programmierung/ Im Zusammenhang mit Klassen/ static in Funktionen

Aus Wikibooks


Funktionen haben einen eigenen Gültigkeitsbereich. Das bedeutet, dass lokale Variablen bei dem Aufruf in einer Funktion ein neuer Wert zugewiesen wird und dieser nach dem Verlassen der Funktion wieder verfällt. Dann gibt es noch globale Variablen, die ihren Wert bereits vor dem Funktionsaufruf erhalten und einen globalen Gültigkeitsbereich besitzen; man kann also von überall auf diese Variablen zugreifen, sie behalten ihren Wert auch nach dem Funktionsaufruf. Dann wären da ja noch die static-Variablen. Wenn also eine Funktion aufgerufen wird und eine static-Variable angelegt wird, behält diese ihren Wert auch noch nach dem Verlassen der Funktion. Hier ein Beispiel für globale, lokale und statische Variablen in Funktionen:

#include <iostream>

using namespace std;

int globalZahl = 1;

void funktion(){
    static int staticZahl = 1;  // Initialisierung; wird nur beim ersten Funktionsaufruf ausgefuehrt!
    int lokalZahl = 1;
    cout << "global: " << globalZahl << endl;
    cout << "lokal:  " << lokalZahl << endl;
    cout << "static: " << staticZahl << endl << endl;
    globalZahl++;
    lokalZahl++;
    staticZahl++;
}

int main(){
    funktion();
    funktion();
    funktion();
}
Ausgabe:
global: 1
lokal:  1
static: 1

global: 2
lokal:  1
static: 2

global: 3
lokal:  1
static: 3