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 🙂


Anmelden zum Antworten