Initalisiert aber irgendwie doch nicht.



  • Also bei folgendem Code kommt die Fehler meldung dass die Variable "plks" nicht initialisert wurde:

    #include <iostream>
    using namespace std;
    
    int main()	{
    
    int i = 0;
    int * plks[13];
    
    		*plks[0]	=	1;
    		*plks[1]	=	1;
    		*plks[2]	=	1;
    		*plks[3]	=	1;
    		*plks[4]	=	1;
    		*plks[5]	=	1;
    		*plks[6]	=	1;
    		*plks[7]	=	1;
    		*plks[8]	=	1;
    		*plks[9]	=	1;
    		*plks[10]	=	1;
    		*plks[11]	=	1;
    
    while (i<11)	{
    
    		(result=result+*plks[i]);
    		i++;
    	};
    
    return 0;
    
    }
    

    Woran kann das liegen?



  • EZed schrieb:

    Woran kann das liegen?

    vorwiegend daran, daß plks nicht initialisiert wurde.
    das ist aber nur ein detail und nur die pingeligen compiler bauen deshalb code, der abschmiert.

    #include <iostream>
    using namespace std;
    
    int main()    {
    
    int i = 0;
    int * plks[13];
    //plks ist ein array von 13 zeigern auf int
    
            *plks[0]    =    1;
    //da, wo der ersze zeiger hinzeigt (er zeigt auf adresse 0x00004711) wird ne 1 reingeschrieben und
    //weil die die adresse 0x00004711 gar nicht gehört, schmiert die kiste ab.
    
    while (i<11)    {
            (result=result+*plks[i]);
            i++;
        };
    //oh, du willtest nur 11 zahlen addieren? dann hätte int plks[13]; gereicht.
    //für das array von zeigern auf int mußte jedem arrayelement auch 
    //speicherplatz geben. normalerweise durch new
    
    return 0;
    
    }
    
    #include <iostream>
    using namespace std;
    
    int main()    {
    
    int i = 0;
    int * plks[13];
    
            *plks[0]    =    new int(1);
            *plks[1]    =    new int(1);
    ...
    
    while (i<11)    {
    
            (result=result+*plks[i]);
            delete plks[i];
            i++;
        };
    
    return 0;
    
    }
    

    oder

    #include <iostream>
    using namespace std;
    
    int main()    {
    
    int i = 0;
    int  plks[13];
    
            plks[0]    =    1;
            plks[1]    =    1;
    ...
    
    while (i<11)    {
    
            (result=result+plks[i]);
            i++;
        };
    
    return 0;
    
    }
    


  • lol, die 2. möglichkeit war die erste die ich probiert hab, damals ging sie nicht, jetzt geht sie, jaja c++ is schon ne feine sache 😉

    dank dir



  • volkard schrieb:

    ...
    int  plks[13];
    
            plks[0]    =    1;
            plks[1]    =    1;
    ...
    

    um die tastatur zu schonen...

    int plks[] = {1,1,1,1,1,1,1,1,1,1,1,1,1};
    

Anmelden zum Antworten