Zeigerarray in Schleife initalisieren schlägt fehl



  • Hi,

    folgender Code bricht beim zweiten Hauptschleifen durchlauf ab

    int **i = new int*[5]; //deklariert einen Zeiger der 5 neue Zeiger
                              // deklariert
       for(int k=0;k<5;++k)
       {
          i[k] = new int[10];  //deklariert für jeden der 5 Zeiger 10 int Felder
    
             for(int y=0;y<10;++y)
             {
                i[k][y] = y;       //weißt jedem der 10 int Felder die aktuelle  
                                   //Zählervariale zu
                cout << "Durchlauf Nr: " << y << "\n"; //Kontrollausgabe
            }
        }
    

    (falls die Kommentare im Code falsch sind bitte berichtigen)
    das Programm sollte eigentlich 5 mal so eine Reihe ausgaben

    "Durchlauf Nr: 0"
    "Durchlauf Nr: 1"
    "Durchlauf Nr: 2"
    "Durchlauf Nr: 3"
    "Durchlauf Nr: 4"
    usw. bis 9 und dann wieder bei 0 anfanen aber anstat das zu tuenen wird die Hauptschleife nur zweimal durchlaufen.

    Und noch eine Frage wie kann ich solch ein Array an eine Funktion übergeben:
    int i[5][10] also das kompltte Array auf einmal, funk(i).

    thx 🙂 🙂



  • Tag,

    Also das sieht so alles ganz richtig aus. Ich wüde aber sagen du solltest den post-increment operator benutzen,da du sonst im Array bei arr[1] anfängst zu zuweisen was zu Problemen führt.

    Also statt ++k k++. Dann müsste es gehen.



  • Hi,

    bei mir funzt es so, wie Du es angegeben hast.

    An eine Funktion übergibst Du das Array halt als Zeiger auf einen Zeiger.

    Bsp:

    void foo(int **zweidimarray);
    

    grüße Con@n



  • prolog schrieb:

    Tag,

    Also das sieht so alles ganz richtig aus. Ich wüde aber sagen du solltest den post-increment operator benutzen,da du sonst im Array bei arr[1] anfängst zu zuweisen was zu Problemen führt.

    Also statt ++k k++. Dann müsste es gehen.

    Das halte ich für ein Gerücht. Der Code oben ist richtig.



  • Weiß der Geier hab den Code gerade nochmal getestet und laeuft einwandfrei. Weiß nicht woran es lag. 😕 😕


Anmelden zum Antworten