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
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.