Variable (Programmierung)
Die Daten, die in einem Programm verarbeitet werden, müssen während der Verarbeitung gespeichert werden. Dies geschieht im Allgemeinen im Hauptspeicher des Computers. Da die explizite Angabe einer Speicheradresse bei größeren Programmen nicht praktikabel ist, werden in höheren Programmiersprachen Variablen verwendet. Eine Variable ist also ein Platzhalter für einen Speicherbereich. Je nach Typ der Variablen ist dieser Speicherbereich verschieden groß, und der Wert der Variablen hat eine durch den Typ bestimmte Bedeutung. Die Adresse des Speicherbereichs bleibt beim Programmieren undefiniert. Erst der Compiler setzt in das Maschinenprogramm für die Variablen Adressen ein, die durch den Linker noch verändert werden, wenn das Programmmodul mit anderen Modulen zusammengebunden wird. Wird das Programm dagegen interpretiert, dann stellt der das Interpreter-Programm zur Laufzeit Speicher für die Variable zur Verfügung.
Der einer Variablen zugeordnete Speicher kann entweder direkt den Wert der Variablen enthalten, oder nur eine [[Referenz (Programmierung)|Referenz](Adresse) auf den Speicher, in dem die eigentlichen Daten liegen. In diesem Fall sagt man, die Variable sei ein Pointer (deutsch: Zeiger).
In den meisten Programmiersprachen muss eine Variable deklariert werden. Dabei werden der Bezeichner (Name) der Variablen, meist auch ihr Typ sowie manchmal weitere Eigenschaften festgelegt. Je nach Programmiersprachen ist die Groß-Kleinschreiunung bei Variablennamen signifikant oder nicht.
Unter dem Gültigkeitsbereich einer Variablen versteht man den Programmabschnitt, für den die Deklaration gültig ist. Ist die Variable innerhalb einer Routine deklariert, dann kann man im Programmtext außerhalb der Routine nicht auf die Variable zugreifen. Man spricht in diesem Fall von einer lokalen Variable. Ist die Variable außerhalb einer Routine deklariert, dann spricht man von einer globalen Variablen. Namen von lokalen Variablen können in anderen Routinen erneut verwendet werden, ohne dass es zu Konflikten kommt. Globale Variablen benötigen dagegen einen eindeutigen Namen.
Unter der Lebensdauer einer Variablen versteht man den Zeitraum, in dem der Variablen Speicherplatz zugeordnet ist. Bei globalen Variablen ist dies im Allgemeinen der Zeitraum von Programmstart bis Programmende. Bei lokalen Variablen ist es im Allgemeinen der Zeitraum vom Aufruf der betreffenden Routine bis zum Verlassen dieser Routine. Es gibt aber in manchen Programmierprachen einen Zusatz bei der Deklaration, der die Lebensdauer einer lokalen Variablen auf die Gesamtlebensdauer des Programmes verlängert (z.B. "static" in der Programmiersprache C).
Bei rekursiver Programmierung gibt es zur Laufzeit von einer Routine oft mehrere "Instanzen" gleichzeitig. Dies wirkt sich dann auch auf normale lokale Variablen aus: sie sind mehrfach vorhanden. In jeder Instanz der Routine ist ihnen eine eigener Speicherbereich zugeordnet. Statische lokale Variablen mit unbegrenzter Lebensdauer sind dagegen nur einmal vorhanden und können in jeder Instanz der Routine geändert werden.
Variablen sollten vor ihrer Benutzung initialisiert werden. Dies kann durch das Laufzeitsystem der verwendeten Programmiersprache geschehen oder durch explizite Zuweisung eines Wertes and die Variable. Bei Programmiersprachen, die nicht automatisch alle verwendeten Variablen initialisieren, sind uninitialisierte Variablen eine Quelle für schwer zu findende Fehler: Da die Variable ohne Initialisierung einen Wert enthält, der zufällig an der zugeordneten Speicherstelle steht, wird das Programm oft je nach Zufallswert funktionieren oder "abstürzen" oder auch einfach falsche Ergebnisse liefern, was evtl. beim Testen nicht entdeckt wird.
Eine besondere Art von Variablen sind Parameter (auch "Argumente" genannt).