C Gültigkeit von Variablen

Kleine Einführung und Beispiele in den Gültigkeitsbereich von C-Variablen.



In C lassen sich Variablen für folgenden Zugriff deklarieren

* Zugriff von allen Modulen und von jeder Funktion aus (globale Variable)
* Zugriff nur innerhalb eines Moduls
* Zugriff nur innerhalb des Aufrufes einer Funktion, sodass die Variable nur während des Funktionsdurchlaufes existiert (lokale Variable)
* Zugriff nur innerhalb einer Funktion, sodass die Variable über die gesamte Programmlaufzeit vorhanden ist (über alle Aufrufe hinweg wird auf die gleiche Variable zugegriffen)


Wenn eine Variable nur innerhalb eines Moduls verwendet werden soll, dann muss diese zu Beginn des Moduls - also vor der Definition der Funktionen - definiert werden.

Das Schlüsselwort >>static<< sorgt dafür, dass aus keinem anderen Modul auf die Variable zugegriffen werden kann, bedeutet, dass der Compiler die variable nicht exportiert.

#include <stdio.h>
static int Variable;
Soll dagegen eine wirklich globale Variable erstellt werden - auf die also von allen Modulen aus zugegriffen werden kann - so muss diese ohne das Schlüsselwort >>static<< definiert werden.

In allen Modulen von denen ein Zugriff erfolgen soll, wird eine Variablen-Deklaration - welche am Schlüsselwort >>extern<< zu erkennen ist - erstellt. Oftmals erfolgt diese Deklaration in einer >>Headerdatei<<.


// Beispiel zur Definition und Deklaration von Variablen in C
 
// Definition einer programmglobalen Variablen
int ProgGlobVar;
 
// Definition einer modulglobalen Variablen
static int ModGlobVar;
 
// Deklaration einer globalen Variablen
extern char *GlobVar;
 
// Definition einer modulglobalen Funktion
static void *function(void)
{
  int LocalVar; // Definition einer lokalen Variablen
  static int FuncGlobVar; // Definition einer Variablen mit
}
* Die Deklaration einer lokalen Variablen ist nicht erforderlich
* Die Deklaration einer lokalen Funktion (Modul nur innerhalb gültig), auf dessen Definition bereits referenziert wird, ist erforderlich