auf den Bilschirmfotos kann man erkennen das sobald "i" in der "for"-schleife den Wert 4 hat es zu einer Fehlermeldung kommt...
Das Problem liegt an einer anderen Stelle:
Du legst ein Array mit 0 Elementen an.
Dann greifst du bei einem Array mit 0 Elementen auf ein Element größer 0 zu, was dazu führt, dass du irgendwo in deinem Arbeitsspeicher werte änderst und dass führt zu den Problemen.
Ein Array ist eine Aneinanderreihung der Variablen/Strukturen mit denen du das Array anlegst. Bedeutet, legst du ein int array an:
hast du 5 ints(normalerweise 4 Byte pro int), die im Speicher direkt hintereinander liegen.
Wenn du nun auf
zugreifst, rechnet dein Compiler die Startaddresse und die 2 vorhegenden Elemente so um, dass du auf das 3 Element(Index beginnt bei 0) zugreifen kannst. Daraus ergibt sich, dass dein Computer und dein Compiler nicht wissen, wie lang dein Array ist und du selber darauf achten musst, nicht über die Grenzen hinweg zu lesen, was möglich ist.
Was passiert hast du ja bemerkt. Du liest über die Grenzen deines Arrays hinweg im Speicher und da kann nun alles mögliche stehen. Du veränderst nun diesen inhalt, von dem du nicht weist wozu er gehört und dass kann dazu führen, dass dein Programm abschmiert.
Was du also machen musst, ist dein Array mit einer gewissen Zahl an Elementen zu initialisieren:
Dann musst du aber immer noch beachten, dass dein größter Index in diesem Fall 9 wäre(Länge - 1, da Index bei 0 beginnt).
Was auch zu beachten ist, ist die Tatsache das Arrays statisch sind. Du musst vor dem Compilieren angeben, wie groß sie sein sollen. Willst du dynamisch Elemente hinzufügen, musst du dir Datenstrukturen wie Listen anschauen, das erfordert dann aber gutes Verständnis von Pointern.
Mit freundlichen Grüßen
cloidnerux
Redundanz macht wiederholen unnötig.
quod erat expectandum