Benutzer:Arbol01/Programmieren für Überflieger: globale und lokale Variablen

Aus Wikibooks

Einleitung[Bearbeiten]

Da man in den meisten Programmiersprachen mit Funktionen arbeiten kann, muß man mit der Bezeichnung der Variablennamen aufpassen, de es unter Umständen zu einem Konflikt kommen kann.

Dazu ein Programm test mit einer Funktion subtest:

{
  a = 5
  call subtest
  print a
}
subtest()
{
  a = 7
  print a
}

Was kann nun beim Aufruf des Programms test passieren?

Möglichkeit 1:
>test
7
5
>
Möglichkeit 2:
>test
7
7
>

Bei der zweiten Möglichkeit gibt es nur eine Variable a, deren Inhalt in der Funktion subtest überschrieben worden ist. Bei der ersten Möglichkeit wurden zwei Variablen angelegt, nämlich die globale Variable a im Hauptprogramm test, und die lokale Variable a in der Funktion subtest.

Wenn man auf Nummer sicher gehen will, egal ob es lokale Variablen gibt oder nicht, benennt man jede Variable individuell. Ansonsten sollte man sich versichern, ob das System lokale Variablen ermöglicht oder nicht.

Bei manchen Systemen muß man die lokale Variable in der Funktion deklarieren:

subtest()
{
  int a;
  a = 7;
  print a;
}

In anderen Systemen muß man sogar deklarieren, ob eine Variable lokal oder global sein soll, weil in der Funktion grundsätzlich auf eine lokale Variable zurückgegriffen wird, und mit dieser expliziten Deklaration dem System klar gemacht wird, das es in der Funktion auf eine globale Variable zurückgreifen soll.

Dort wo keine Ausnahmen möglich sind, man aber dennoch auf die globale Variable zurückgreifen will, kann man sie bei der Übergabe als Parameter mit angeben:

{
  a = 5
  b = 3
  call subtest(b)
  print a*b
}
subtest(n)
{
  a = 7
  b = n
  print a*b
}