C-Gültigkeitsbereiche verstehen: Lokale, Globale & Formale Variablen
Ein Gültigkeitsbereich (Scope) in der Programmierung ist ein Bereich des Programms, in dem eine definierte Variable existiert und darauf zugegriffen werden kann. Darüber hinaus kann die Variable nicht mehr zugegriffen werden. In C gibt es drei Orte, an denen Variablen deklariert werden können:
- Innerhalb einer Funktion oder eines Blocks – lokale Variablen.
- Außerhalb aller Funktionen – globale Variablen.
- In der Definition von Funktionsparametern – formale Parameter.
Lokale Variablen
Variablen, die innerhalb einer Funktion oder eines Blocks deklariert werden, heißen lokale Variablen. Sie können nur von Anweisungen verwendet werden, die sich in derselben Funktion oder demselben Codeblock befinden. Lokale Variablen sind Funktionen außerhalb ihres eigenen nicht bekannt.
Beispiel
#include <stdio.h>
int main() {
int a, b;
int c;
a = 10;
b = 20;
c = a + b;
printf("Wert von a = %d, b = %d und c = %d\n", a, b, c);
return 0;
}
Globale Variablen
Globale Variablen werden außerhalb einer Funktion definiert, normalerweise am Anfang des Programms. Sie behalten ihre Werte während der gesamten Lebensdauer des Programms bei und können in jeder der für das Programm definierten Funktionen aufgerufen werden.
Eine globale Variable kann von jeder Funktion aufgerufen werden. Das heißt, sie ist im gesamten Programm nach ihrer Deklaration verfügbar.
Beispiel
#include <stdio.h>
int g; // globale Variable
int main() {
int a = 10, b = 20;
g = a + b;
printf("Wert von a = %d, b = %d und g = %d\n", a, b, g);
return 0;
}
Ein Programm kann denselben Namen für lokale und globale Variablen haben, aber der Wert der lokalen Variable innerhalb einer Funktion hat Vorrang.
Beispiel: Namenskonflikt
#include <stdio.h>
int g = 20; // global
int main() {
int g = 10; // lokal (verdeckt globale Variable)
printf("Wert von g = %d\n", g); // gibt 10 aus
return 0;
}
Ausgabe: Wert von g = 10
Formale Parameter
Formale Parameter werden als lokale Variablen innerhalb einer Funktion behandelt und haben Vorrang vor globalen Variablen.
Beispiel
#include <stdio.h>
int a = 20; // global
int sum(int a, int b) {
printf("Wert von a in sum() = %d\n", a); // formaler Parameter a
printf("Wert von b in sum() = %d\n", b);
return a + b;
}
int main() {
int a = 10; // lokal in main
int b = 20;
int c = 0;
printf("Wert von a in main() = %d\n", a);
c = sum(a, b);
printf("Wert von c in main() = %d\n", c);
return 0;
}
Ausgabe:
Wert von a in main() = 10
Wert von a in sum() = 10
Wert von b in sum() = 20
Wert von c in main() = 30
Initialisierung lokaler und globaler Variablen
Wenn eine lokale Variable definiert wird, wird sie nicht vom System initialisiert – Sie müssen sie selbst initialisieren. Globale Variablen werden automatisch vom System initialisiert:
| Datentyp | Standard-Initialwert |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointer | NULL |
Es ist gute Programmierpraxis, Variablen ordnungsgemäß zu initialisieren, andernfalls kann Ihr Programm unerwartete Ergebnisse liefern, da nicht initialisierte Variablen beliebige Werte (Müllwerte) an ihrer Speicherposition enthalten.
C Sprache
- Wesentliche Regeln für Reihenschaltungen: Strom, Widerstand und Spannung
- Parallelschaltungs-Grundlagen: Spannung, Widerstand und Strom-Regeln
- Wichtige Ableitungsregeln: Kurze Referenz
- Fundamentale Integrationsregeln: Konstanten, Summen und Differenzen
- C# Variablen & Primitive Datentypen meistern: Der komplette Guide
- Variablengültigkeitsbereich in C# verstehen: Klassen-, Methoden- und Blockebene
- C++-Variablen, Literale und Konstanten meistern: Ein umfassender Leitfaden
- C Variablen, Konstanten und Literale: Ein vollständiger Leitfaden
- C Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer und Performance
- Java Variablen und Literale: Umfassender Leitfaden