Rolf B: Begriff erklären

Beitrag lesen

Hallo TS,

statisch deklarierte Variablen in Funktionen.

Das ist eine C/C++ Spezialität. Gibt's das auch anderswo? In PHP nicht, soweit ich weiß.

Aber auch da gilt: Die leben nicht auf dem Stack, sondern nur einmal während der Programmlaufzeit. Durch static wird lediglich die Sichtbarkeit eingeschränkt (was die C-Macher dann auf den bekloppten Trip brachte, die Sichtbarkeit einer globalen Variablen oder Funktion mittels static auf ein sourcefile zu begrenzen, statt ein neues Keyword wie 'private' einzuführen.

Da wird die Adresse der Variable im Datensegment auf dem Stack übergeben

Echt jetzt?

void foo() {
   static int bar;
   bar = bar + 1;
   showValue(&bar);
}

Wenn ich foo aufrufe, bekommt sie die Adresse von bar übergeben? Fände ich merkwürdig. Oder übergibt foo die Adresse von bar lediglich via Stack[1] an showValue? Das wäre dann normales Verhalten. Ohne & würde der Wert von bar auf den Stack gelegt.

Rolf

--
sumpsi - posui - clusi

  1. okay, je nach calling convention kann es auch ein Register sein ↩︎