Arbeiten mit Variablen

OP #1539407
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

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