globale / statische lokale Variable Unterschied?
-
globale als auch statische lokale Variable werden im sogenannten "Datensegment" angelegt. Was ist genau der Unterschied?
-
Der Unterschied liegt an den Teilnehmern die darauf zugreifen können.
Globale Variablen sind im ganzen Programm bekannt, wer den Typ und Namen kennt kann darauf zugreifen ober es soll oder nicht. Deswegen ist dieser Einsatz absolut zu minimieren. Es gibt zu viele Seiteneffekte.
Globale Variablen werden angelegt in dem man eine Variable außerhalb jedes Funktionsrumpfes definiert.statische lokale Variabeln werden innerhalb von Funktionen angeleget, diese sind außerhalb dieser Funktion nicht bekannt. Der Ineteressant Punkt daran ist, das diese Variablen ihren Wert auch behalten wenn die Funktion zwischendurch verlassen wird. Diese statischen Variablen müssen mit dem keyword static in der Funktion deklariert werden
Ein interessanter 3ter Fall ist eine statische globale Varible. Sie wird wie globale Variable deklariert hat allerdings zusätzlich das Keyword static. Diese Variable it dann nur in diesem einen
File bekannt. (Vor und Nachteile kann man sich überlegen)
-
..... schrieb:
globale als auch statische lokale Variable werden im sogenannten "Datensegment" angelegt. Was ist genau der Unterschied?
Die können auch in verschiedenen Segmenten liegen.
PAD, du hast einen sehr wichtigen Unterschied vergessen: Alle globalen Variablen werden in einer nicht näher definierten Reihenfolge vor dem Aufruf von main initialisiert, also erstellt. Ein lokale, statische Variable wird erst dann erstellt, wenn die Definition der Variablen das erste Mal ausgeführt wird. Unter Umständen passiert das nie.
-
@cd9000 Danke für die Ergänzung, das war mit bisher nicht bewußt, ist aber in gewissen Sinne logisch. Erst wenn ich die Funktion zum ersten mal betrete wird der Code zum Anlegen der Variable ausgeführt
-
-> FAQ