Mehrdimensonales Array initialisieren?



  • Ich weiß nicht was an dem Code (der nicht ausgeklammerte falsch ist), aber wenn ich da auf die Elemente zugreif, dann zeigt er mir eine wilkürliche Zahl an. Der ausgeklammerte funktioniert.

    int main(int argc, char* argv[])
    {
       int schachbrett[8][8];
       for(int i = 0, k = 0; i < 8; i++, k++)
       {
          schachbrett[i][k] = 0;
       }
       /*for(int i = 0; i < 8; i++)
       {
          for(int k = 0; k < 8; k++)
          {
             schachbrett[i][k] = 0;
          }
       } */
       cout << schachbrett[5][7];
       getch();
            return 0;
    


  • Hallo,
    Um zu verstehen, warum dein einkommentierter Code nicht wie gewünscht läuft, musst du dir den Ablauf der Schleife verdeutlichen.

    Wenn du eine Schleife 8mal laufen lässt, und nach jedem Durchlauf k und j inkrementierst, haben k und j die folgenden Werte:

    Schleifenlauf:    1  2  3  4  5  6  7  8
    -------------------------------------------
                   k: 0, 1, 2, 3, 4, 5, 6, 7
                   j: 0, 1, 2, 3, 4, 5, 6, 7
    

    => Du initialisierst nur die Indizes schachbrett[k][j] mit Null (wobei k und j nur die obigen Werte haben), der Rest verbleibt in uninitialisiertem Zustand.

    Bei deinem auskommentierten Code ist dies nicht der Fall... am besten du schaust dir nochmal das Kapitel Schleifen genau an :).

    Gruß Caipi



  • Ach so, klar^^
    Es haben also immer nur 0,0 / 1,1 / 2,2 usw den Wert 0, nicht aber 0,1 / oder 3, 5
    kk^^
    aber schleifen muss ich mir ja nicht angucken, war nur so ein Denk-Problem von mir, wie so oft 😃 😉
    Also danke


Anmelden zum Antworten