Verständnisproblem bei static Variablen

Gast #2600643
Hallo,

ich habe ein kleines Veständnisproblem bei static Variablen.

Es geht darum, innerhalb einer Funktion eine lokale Variable als static 
zu deklarieren.

Annahme:

Ich hab eine Modul mit mehreren void-Funktionen die irgendetwas machen.

Die Static-Variable kann nur innerhalb dieses Moduls verwendet werden. 
Von außen ist sie ja "unsichtbar".

Gleichzeit erfolgt die Initialisierung nur einmal, d.h. sie behält ihre 
Werte im Gedächtnis.


Das würde aber doch in folgendem Beispiel dazu führen, daß die Variable 
irgendwann überläuft. Ist das richtig ?


void test1(void)
{
  static unsigned int var = 0;
  var++;
}


void test2(void)
{
  static unsigend int var = 0;
  var++;
}


void test3(void)
{
  static unsigned int var = 0;
  var ++;
}


Rein theoretisch würde doch die Variable nie wieder auf 0 initialisiert 
werden, sondern nur einmal von der Funktion, die am ersten aufgerufen 
worden ist, und danac würe var immer nur inkrementiert werden. Richtig ?

Danke
Olaf
#2600661
Olaf der kleine schrieb:

> Annahme:
>
> Ich hab eine Modul mit mehreren void-Funktionen die irgendetwas machen.
>
> Die Static-Variable kann nur innerhalb dieses Moduls verwendet werden.
> Von außen ist sie ja "unsichtbar".

AUfpassen.

Dein Beispiel hat 3(!) voneinander unabhängige Variablen, die alle 'var' 
heißen. Die haben nichts miteinander zu tun!

> Das würde aber doch in folgendem Beispiel dazu führen, daß die Variable
> irgendwann überläuft. Ist das richtig ?

Nichts desto trotz kann natürlich jede einzelne von ihnen überlaufen, 
wenn 'ihre' Funktion entsprechend oft aufgerufen wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.