Array Position

Winner

Erfahrenes Mitglied
Hallo zusammen! Ich habe mal wieder vielleicht auch sehr einfaceh frage.

Ich habe ein Array. In diesen schreibe ich in gewissen Abständen Informatioen ein, also Zahlenwerte in meinem Fall.

Nun möchte ich aber heraus finden, welches meine aktuelle Positon ist. Gibt es dafür einen Befehl oder ist es mir nur möglich die aktuelle Position in einer Globalenvariable zu speichern

Weil das durchlaufen des Arrays und zuschauen wo eine freiue Postion ist würde für mich so lange dauern, und daher würde ich mich dann für die Globalevariable entscheiden. Oder gibt es eine Funktion, die das für mich ermittelt.
 
Hi.
Weil das durchlaufen des Arrays und zuschauen wo eine freiue Postion ist würde für mich so lange dauern, und daher würde ich mich dann für die Globalevariable entscheiden. Oder gibt es eine Funktion, die das für mich ermittelt.
Wenn es eine Funktion gäbe, müßte diese ja das gleiche machen und das Array nach einer "freien Position" durchsuchen (wobei man generell überhaupt nicht sagen kann wann eine Postition "frei" ist).

Du solltest den Füllstand des Arrays einfach in einer Variable speichern. Dazu würde sich eine Struktur anbieten:
C:
struct Array {
  int data; // die Daten des Arrays
  int size; // Füllstand
  int capacity; // Kapazität des Arrays (falls size == capacity, dann Array voll)
};
Gruß
 
Hallo! Danke für die Antwort, an das dachte ich auch schon!

Aber ich werde mal schauen wie ich das jetzt löse.

Ich denke mal, dass ich lieber eine Globalevariable definiere als wie dies mit der satuctur. Denn so wird unötig speicher verschwendet! Muss da bei meinem Programm sparsam mit umgehen.

Vielen dank + schönen Gruß
 
Ich denke mal, dass ich lieber eine Globalevariable definiere als wie dies mit der satuctur. Denn so wird unötig speicher verschwendet!
Wie meinst du denn das? Du mußt doch sowieso diese Werte im Programm parat haben, und das macht dann keinen Unterschied (außer du hast ein sehr merkwürdiges Data Alignment bei deiner Ziel-Architektur).

Gruß
 
Also ich meine es so!

Wenn ich eine struct wie du beschrieben hast als Array definiere, habe ich bei einer größe von 100 zb den ganzen Speicher für die Anzahl der aktuellen Position verscwendet bzw. besser gesagt die Gesamtgröße. Oder haben wir vielleicht an einander vorbei geredet

Aber danke für deinen Einsatz
 
Wenn ich eine struct wie du beschrieben hast als Array definiere, habe ich bei einer größe von 100 zb den ganzen Speicher für die Anzahl der aktuellen Position verscwendet bzw. besser gesagt die Gesamtgröße. Oder haben wir vielleicht an einander vorbei geredet
Die Struktur wäre ja so nicht als allgemeines Array zu verwenden gewesen, sondern speziell für den Fall, das man das Array als Stack oder Puffer oder ähnliches verwendet, wo man eine Größe hat und einen Füllstand.

Für ein "normales" Array, welches keinen Füllstand hat bzw. sich die Größe nicht ändert wäre die Struktur nicht gedacht. Ich hätte die Struktur besser "ArrayMitFuellstand" nennen sollen.

Die Größe des Arrays mußt du immer speichern, ob nun als Variable oder als Konstante im Datensegment. Ich würde dir raten erstmal das Programm zu erstellen (so dass es korrekt arbeitet) und dem Compiler bei der Optimierung zu vertrauen, bevor du dich daran machst per Hand 4 Byte Speicher zu sparen... Da gibt es meist andere Techniken den Speicherverbrauch zu reduzieren als eine einzelne Variable einzusparen.

Gruß
 
Zurück