Arbeiten mit Variablen

OP #1539407
Ein gutes neues Jahr wünsche ich allen Forenmitgliedern

Aber auch im neuen Jahr gibt es kleine Probleme mit denen ich mich 
vertrauensvoll an euch wende.

Es geht um folgendes:
Ich habe eine Funktion in C geschrieben die mir den Ladevorgang eines 
Akkus überwacht und verschiedene Aktionen ausführt.
Für diese Verschiedenen Aktionen sind mehrere Globale Variablen 
deklariert worden. An die Funktion übergebe ich den aktuell zu ladenden 
Akku (1-4). Innerhalb der Funktion soll nun für den jeweiligen Akku 
bestimmte Prüfungen durchgeführt werden und in die globalen Variablen 
geschrieben werden (Ladestrom, Ladezustand, schreiben in EEPROM, etc.)
Jetzt ist die Frage, ob es irgendwie die Möglichkeit gibt anhand des 
übermittelten Akkus zu der Funktion, in die zum jeweiligen Akku 
zugehörige Globale Variable zu schreiben?

Ich habe mir das ganze so vorgestellt:
1
//************** Globale Variable *******************
2
unsigned int StromAkku1
3
unsigned int StromAkku2
4
...
5

6
//******* Funktion Laden ****************************
7
// Übergabe: Zu ladender Akku    Rückgabe: 0 = akku Voll / 1= Akku Laden
8

9
bool laden (unsigned char AkkuNr)
10
{
11
  StromAkku(hier die AkkuNr anhängen) = Ladestrom (....);
12
  ....
13
  ....
14
}

Kann man sowas irgendwie lösen? Weil ich habe keinen Ansatz wie, 
geschweige denn eine Ahnung mit welchen Begriffen ich den Google füttern 
soll.
Danke mal für euere Hilfe

Gruß
#1539415
so direkt geht das nicht.

Aber man kann entweder statt der einzelnen Variablen ein Feld nehmen,
dann kann darüber iteriert werden.

Alternativ könnte man die globalen Variablen lassen wie sie sind und
zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
Schleife über die Zeiger die Variablen anfassen.
Gast #1539417
Wenn ich dich richtig verstanden habe willst du je nach AkkuNr die 
globale Variable wählen.

Entweder du fragst per If oder Switch die übergebene AkkuNr ab und 
wählst so die richtige Variable oder du nutzt zB ein Array...

AkkuStrom[1] -> Strom für Akku 1
AkkuStrom[2] -> ...

Hoffe so meintest du es...
OP #1539431
Klaus Wachtler schrieb:
> Alternativ könnte man die globalen Variablen lassen wie sie sind und
>
> zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
>
> Schleife über die Zeiger die Variablen anfassen.

Wie darf ich das verstehen? und wie müsste ich das programmtechnisch 
lösen?
Ich kann mir darunter grad gar nichts vorstellen.


Jonas schrieb:
> AkkuStrom[1] -> Strom für Akku 1
>
> AkkuStrom[2] -> ...

das ist natürlich auch eine Möglichkeit, wenn ich dich reichig verstehe, 
müsste ich dazu eine Array mit 4 Speicherplätzen anlegen und jedem Akku 
eine Speicherstelle zuweisen. Das muss ich gleich mal probieren, danke 
für den Denkanstoß!
#1539438
Dirk K. schrieb:
> Wie darf ich das verstehen? und wie müsste ich das programmtechnisch
> lösen?
> Ich kann mir darunter grad gar nichts vorstellen.

So ähnlich, wie es Jonas wahrscheinlich auch meint.

Halt nicht so:
1
int  StromAkku1;
2
int  StromAkku2;
3
...

sondern stattdessen so:
1
int  StromAkku[4];
2
...
3
   for( i = 0; i<4; i++ )
4
   {
5
      StromAkku[i] = ...;
6
   }

Nicht vergessen: Bei Feldern hat das erste Element die Nummer 0,
man zählt also nicht von 1 bis 4, sondern von 0 bis 3.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.