Startet der Arrayindex bei 0 oder 1

Gast #412273
Lesenswert?
• ▲
▼
Hallo Leutz

Hätte mal ne Frage, wär schön wenn jemand helfen könnte.

Von wo startet eigentlich der Arrayindex beim avr-gcc? Mir ist
aufgefallen, dass ich Arrays mit Index 0 soviel anlegen kann wiviel ich
will, die Zusammenfassung nach dem Compilieren, wo ja steht wiviel ich
Speicher benutze ist immer gleich.

Ich deklariere die Arrays so:


uint8_t variable[0];


Würde mich echt freuen wenn ihr eine Antwort wisst, danke.

Michael
Gast #412274
Lesenswert?
• ▲
▼
Die von dir eingesetzte 0 ist kein Index. Sie ist die Anzahl der
gewünschten Arrayelemente beim Anlegen des Arrays.

Der Index wird erst beim Arbeiten mit dem Array verwendet, also beim
Lesen oder Schreiben. Und da beginnt der Index bei C immer mit 0 (nie
negativ sonst Bufferunderflow) und geht bis zur oben festgelegten
Anzahl minus 1 (nie drüber sonst Bufferoverflow).

Es kann durchaus sein, dass

uint8_t variable[0];
uint8_t variable[1];
uint8_t variable[2];

den gleichen Speicherbedarf haben. Das hängt davon ab, wie der
Compiler/Linker Variablen im Speicher ausrichten - Stichwort Alignment.
Gast #412275
Lesenswert?
• ▲
▼
Hallo Stefan

Voll cool, :) Habe jetzt schon einige Stunden damit verbracht den
Fehler zu finden, und das ist er gewesen. Programmiererfahrung habe ich
nur in  Visual Basic.NET, und wenn man da einen Array mit 0 deklariert
dann hat man Bereits ein Element. Also ddanke nochmal, jetzt
funktionierts wunderbar.

Michael

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.