Variable in Unterprogramm (C)

Gast #2621809
Lesenswert?

Hallo,

um die Übersichtlichkeit in meinem Programm zu erhöhen und es leichter 
zu handhaben gliedere ich gerade einige Programmabschnitte in 
Unterprogramme aus.

Nun habe ich aber eine Variablen, die sich nicht bei jedem 
Unterprogrammaufruf neu initialisieren sollen, wie zum Beispiel Zähler, 
die pro Aufruf eins hinzuaddieren.

Gibt es eine Möglichkeit in C, die eine Variable nur initialisiert, wenn 
sie es noch nicht ist?

Im Sinne von:
1
 
2
void unterprogramm(void)
3
{
4
   if( !is_initialisiert(counter))
5
      uint8_t counter = 0;
6
}

Andere Möglichkeiten wären natürlich die Variable als volatile außerhalb 
des Programms zu deklarieren oder sie an das Überliegende Programm per 
return zu übergeben.
Ersteres soll sich ja schlecht auf die Performance auswirken, zweiteres 
hätte eigentlich nur den Nachteil, dass man vergessen könnte, die 
Variable raus zu nehmen, wenn man das Unterprogramm entfernt.

Wie wird sowas in der Praxis gehandhabt?
Wie mache ich es am effektivsten?

Gruß
#2621875
Lesenswert?

Karl Heinz Buchegger schrieb:
> Ich kanns nicht lassen.
>
> Am effektivsten machst du das, in dem du dir ein C-Buch holst und lernst
> welche Möglichkeiten dir die Sprache eigentlich zu bieten hat.

Präzisieren wir das noch etwas:
Schau mal in deinem C Buch nach Pointer bzw Zeiger.
Übergebe dem Unterprogramm die Adresse des im übergeordneten Programm 
definierten Zählers und lasse den Zähler dann in dem Unterprogramm 
hochzählen.
Hat den Vorteil daß der Zähler auch im übergeordneten Programm sichtbar 
ist und sogar in verschiedenen Unterprogrammen benutzt werden kann
Das ist eine tolle Übung um Zeiger verstehen zu lernen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren