Variable in Unterprogramm (C)

Gast #2621809
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
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

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.