
Ömer sagt:
Scope – wo eine Variable lebt. Lokal ist fast immer besser als global. Globale Variablen sind wie geteilte Schubladen: jeder greift rein und keiner weiß was drin ist!
Lokale Variablen
Nur in ihrer Funktion sichtbar
Lokale Variablen werden innerhalb einer Funktion deklariert. Sie existieren nur während der Ausführung dieser Funktion.
Globale Variablen
Außerhalb aller Funktionen – überall sichtbar
Globale Variablen sind in allen Funktionen lesbar und schreibbar. Das macht sie gefährlich: Jede Funktion kann sie verändern, ohne dass andere es erwarten.
scope.cC
int global = 10; // GLOBAL void zeige() { int lokal = 5; // LOKAL – nur in zeige() printf("%d %d\n", global, lokal); } int main() { printf("%d\n", global); // OK // printf("%d", lokal); FEHLER – nicht sichtbar! }
Faustregel
| Typ | Empfehlung | Warum? |
|---|---|---|
| Lokal | ✅ Immer bevorzugen | Klar, sicher, testbar |
| Global | ⚠️ Nur wenn nötig | Jeder kann es verändern |
| Global const | ✅ OK für Konstanten | const int MAX = 100; |
Gültigkeitsbereiche – Visualisierung
| Variable | Typ | Wo deklariert | Lebt bis | Sichtbar in |
|---|---|---|---|---|
int x in main() | lokal | innerhalb main | main endet | nur main() |
int i in for(...) | lokal (Block) | im for-Block | Block endet | nur der for-Block |
int global = 0; | global | außerhalb aller Funktionen | Programmende | überall |
static int cnt | static | innerhalb Funktion | Programmende | nur die Funktion |
Häufige Fehler
Warnung: Typische Scope-Fehler
- Lokale Variable nicht initialisiert:
int x; printf("%d", x);– x enthält einen zufälligen Wert (Garbage Value). Immer initialisieren! - Globale Variable aus Versehen überschreiben (Shadowing): Eine lokale Variable mit dem gleichen Namen wie eine globale Variable verdeckt die globale – innerhalb der Funktion wird die lokale verwendet, was zu unerwartetem Verhalten führt.
- Variable außerhalb ihres Blocks referenzieren: Eine Variable die in einem
if- oderfor-Block deklariert wurde, ist außerhalb nicht sichtbar – Compilerfehler.
⚡ Code-Simulator
Schreibe eigene Funktionen und teste sie – der Simulator zeigt printf-Ausgaben:
C Simulator – Unit 18 – Funktionen
▶ Ausgabe
– Klicke AUSFÜHREN –

Ömer sagt:
Schreibe eigene Funktionen und ändere die Argumente beim Aufruf. So siehst du direkt wie Funktionen Daten verarbeiten!
🎯 Wissens-Quiz
Frage 1
Wo werden lokale Variablen deklariert?
Frage 2
Was ist der Gültigkeitsbereich einer globalen Variable?
Frage 3
Warum sollte man globale Variablen vermeiden?
Frage 4
Was ist 'Shadowing'?
Frage 5
Welche Variable-Deklaration ist immer sichtbar?
Frage 6
Was ist "Variable Shadowing"?
Frage 7
Was ist der Wert einer nicht initialisierten lokalen Variable?
Frage 8
Was ist eine static-Variable in einer Funktion?
📋 Spickzettel
Scope-Regeln
LokalNur in der Funktion
GlobalÜberall im Programm
Lebensdauer lokalWährend der Funktion
Lebensdauer globalGesamte Laufzeit
Best Practices
Lokal bevorzugenSicherer!
Global vermeidenSchwer zu debuggen
const int MAXFür Konstanten OK
Per ParameterWerte übergeben
✅ Checkliste Unit 18
- Ich kenne den Unterschied zwischen lokalen und globalen Variablen
- Ich verstehe warum globale Variablen problematisch sind
- Ich erkenne Shadowing
- Ich bevorzuge lokale Variablen und übergebe Werte als Parameter