3-dimensionales Array auslesen (mit Pointer); Derefenrenzierungsprobleme



  • Hallo zusammen!!!

    Ich habe ein Array definiert und initialisiert. Das Array hat die Form a[4][2][3]. Nun, so viel ich weiss, ist: int (*q)[2][3]=a der Pointer auf das erste Element des 3-D-Arrays. Wenn ich nun mit einer for-schlaufe...

    for (;q<a+24;)
    std::cout << *q;
    ++q;

    ...alle Werte auslesen möchte, so bekomme ich im output lauter adressen (pointer) anstatt den Werten die ich eingelesen habe.
    Wo ist hier das Problem? Oder wie kann man dieses Problem lösen?

    Gruss

    P.S. Dies ist eine Schulaufgabe und sollte mit Pointern gelöst werden... Andere (meistens bessere und effizientere) Lösungen sind nicht erwünscht... leider..



  • Anfänger2 schrieb:

    int (*q)[2][3]=a der Pointer auf das erste Element des 3-D-Arrays. Wenn ich nun mit einer for-schlaufe...

    Das ist nur halb richtig. Der Name eines Arrays ist ein Pointer auf das erste Element. Da du aber ein dreidimensionales Array hast, ist natürlich jedes Element deines Arrays x wieder ein Array y. Und jedes Element deines Arrays y ein Array z. Also müsstest du, wenn du einen Wert ausgeben willst etwas machen wie:

    std::cout << ***q;
    


  • Saluti
    Hab das mal so gemacht mit dreifach-differenzieren. Nun sind die einzigen (brauchbaren) Werte die ich erhalte, der erste Wert des Arrays (von arrays) a[0] und der erste Wert des arrays a[1] ... a[3].

    Dies ist mir sehr rätselhaft. Muss ich mit verschiedenen Pointern für verschiedene Dimensionen resp. Arrays arbeiten? Ich dachte die mehrdimensionalen Arrays sind im Speicher hintereinander abgelegt... So müsste es eigentlich mit der Iteration mit dem Pointer funktionieren 😕

    Gruss


Anmelden zum Antworten