Ich habe ein zweidimensionales Array angelegt " byte inStr[5][255] = {0} ; ".
Dieses Array ist ein zentrales Element in meinem Programm und deshalb gibt es auch sehr viele schreib- und lesezugriffe darauf.
Teils über " inStr[a] ```c
** = b;[/b] " ; teils über " d = inStr[4][69]; " oder es wird a und c in Schleifen hoch oder runtergezählt.
Wegen der Größe des Arrays geht mir nun langsam der freie RAM-Bereich aus.
Ich brauche aber nicht wirklich in allen zeilen des Arrays 255 byte.
Wie kann ich ein Array definieren auf das ich nach wie vor über inStr[a][c] zugreifen kann, wobei aber Zeile 1, 2 und 3 nur je 30 Byte reservieren während Zeile 4 und 5 eine Länge von 255 Byte haben soll.
Ein zerlegen des zweidimensionalen Array in 5 fünf eindimensionale Arrays wäre eine Möglichkeit, aber die hätte leider umfangreiche Änderungen im Programmcode zu Folge.
Welchen Arduino hast Du?
Beschreibe Dein Problem genauer. Wenn Du nicht alle Elemente des 5x255 Arrays brauchst (bist Du sicher daß es kein 5x256 Array ist?) Dann müssen wir mehr Infos haben um Dir helfen zu können.
Grüße Uwe
Ich denke es ist richtig, dass das Array 5*255 Byte groß ist.
byte x[30]; ergibt eine Variable mit 30 Byte welche über die Adressen 0...29 angesprochen werden können.
Das Problem genauer zu beschreiben fällt mir irendwie schwer, ich versuche es mal anders zu beschreiben.
Das Array ist jetzt 5255 Byte groß und hat einen Namen über den ich jedes Byte ansprechen kann - Name (x,y).
Wirklich brauche ich aber nur ein Array das 330 Byte + 2*255 Byte groß ist.
Wie kann ich ein solches Array so definieren daß es auch weiterhin nur über einen Variablenamen ansprechbar ist?
wenn ich:
byte inStr_A[30];
byte inStr_B[30];
byte inStr_C[30];
byte inStr_D[255];
byte inStr_E[255];
schreibe, habe ich genau das definiert was ich brauche. Aber eine Adressierung über Name (x,y) ist nicht mehr möglich weil es jetzt 5 Arrays mit 5 verschiedenen Namen sind.
Vielleicht ist mein Problem so verständlicher beschrieben.
Ich möchte drei der fünf Arrays kleiner machen weil ich dort nur 30 statt 255 Byte brauche um RAM zu sparen.
Ich möchte aber auch das gesamte Array weiterhin über einen Namen (und nicht fünf ) ansprechen können um nicht das ganze Programm ändern zu müssen.