Mehrdimensionale Vektoren



  • Hallo Zusammen
    Ich habe ein zweidimensionales Array a[2][5](2 Zeilen und 5 Spalten).
    Wenn ich das Array mit Werten fülle und dan ausgeben will, verstehe ich die Ausgabe nicht

    char a[2][5] = {
            {12,13,14,15,16},
            {3,4,5,6,7}
                       };
            char b,c,d,e;
            b = a[1][4];
            c = *(a+1)[3]; 
            printf("%d\n",b);
            printf("%d\n",c);
    

    Die Ausgabe ist:
    7
    40
    Die erste Ausgabe versteh ich, jedoch die zweite nicht. Kann mir jemand das erklären??
    Wenn ich

    (*(a+1))[3]
    

    schreibe dann wäre die Ausgabe: 6.


  • Mod

    Postfixoperatoren haben Vorrang vor Präfixoperatoren.

    *(a+1)[3] // ist äquivalent zu
    *((a+1)[3]) // bzw.
    *(*((a+1)+3)) // bzw.
    *(*(a+4)) // bzw.
    a[4][0]
    

    Das Array a hat nur 2 Elemente, a[4] greift folglich auf ein nicht Existierendes zu, es ist UB.


Anmelden zum Antworten