Array Frage
-
Wieso läuft der Code hier in einer Endlosschleife

[Ja ich weiss der Code macht kein Sinn, es geht mir um das verhalten von dem Programm ]#include <iostream> using namespace std; int main() { int var[4]; cout<<"ok"; for(int i=0; i < 20 ;i++) { var[4]=1; } cout<<"ende"; cin.get(); return 0; }
-
1. Läuft der bei mir nicht in einer Endlosschleife und
2. existiert var[4] nicht, -> undefiniertes Verhalten. (Wahrscheinlich liegt bei a[4] bei dir i, das du dann dauernd überschreibst und das somit nie 20 erreicht.)
-
weil wohl zufällig da wo var[4] liegen würde, i liegt. Da da über die Grenzen des Arrays schreibst, ersetzt du wohl jedes mal i mit 1.
Arrays fangen bei 0 an!greetz KN4CK3R
-
Ja i liegt da wo var[4] liegt ...
var[4] erstellt diese Elemente -> 0 1 2 3 4 (5=Nullterminator)
Wieso macht der Compiler da so ein müll?

Und wieso existiert var[4]; nicht

Ja und wenn ich es als Release Compiliere dann geht es ...
Selbst wenn ich die Elemente initialisieren will das Programm als Debug Build nicht funktionieren:
#include <iostream> using namespace std; int main() { int var[4]={9}; cout<<"ok"; for(int i=0; i < 20 ;i++) { cout<<i<<endl; var[4]=1; } cout<<"ende"; cin.get(); return 0; }Sowas ist mir vorher noch nie mit dem Compiler passiert.
-
es existiert var[4] nicht, weil du ein Array mit 4 Elementen definierst:
var[0],var[1],var[2] und var[3]! Sind 4 Elemente!PS: Ein Nullterminator '\n' existiert in deinem Array nicht, da es kein String ist!
-
wtfwtfwtf schrieb:
var[4] erstellt diese Elemente -> 0 1 2 3 4
Überleg mal, wie viele Elemente ein Array hat, dem du die Größe 4 gegeben hast (z.B var[4]). Und dann zähle mal, wie viele Zahlen du hinter den Pfeil geschrieben hast. Und dann nimm nochmal ein Anfängerbuch für C++ zur Hand und lies dir den Abschnitt über Arrays aufmerksam durch
