1

C++ Typ von Variable angeben (Array, Pointer)

Frage von ooooo ooooo

Hallo,

Ich muss den Typ von 2 Variablen in angeben. Von a und b.

int *a[3][6];

int (* b)[6][3] = (int(*)[6][3])x;

Leider habe ich das mit den Arrays und Pointern noch nicht ganz verstanden.

Bei a würde ich sagen das ist ein Zeiger auf ein zweidimensionales 3x6 Array mit Elementen vom Typ int, stimmt das? Nur was ist b? Ich weiß nicht was ich mit den Klammern anfangen soll...

Wäre toll wenn mir jemand helfen könnte. :)

Fragen zu gleichen Themen finden

Antworten (2)

  • 2
    Antwort von greyhead greyhead
    int *a;      // a ist ein Zeiger auf einen int.
    int a[3][6]; // a ist ein zweidim. Array, das int enthält.
    int *a[3][6]; // a ist ein zweidim. Array, das Zeiger auf int enthält.
    

    Die Klammer um (*b) bindet nun den Pointerstern stärker an das b, als die eckigen Klammern und was in runden Klammern steht, wird auch hier zuerst ausgewertet. Also:

    int (*b)[6][3];  // (b ist ein Zeiger) auf ein zweidim. Array, das int enthält.
    

    Und x wird zu so einem Zeiger hingecastet.

    Ich hoffe, dass die Geschichte etwas klarer geworden ist, statt dunkler...

  • 0
    Antwort von dagger17 dagger17

    Jo das hätte ich auch so geschrieben, wäre ich schnell genug gewesen.

    Würde nur nur anmerken, dass man sich fragen sollte ob es Sinn macht x zu casten. Meistens reicht bei sowas eine einfache Referenzierung dieser Art.

    int x[6][3];
    int (* b)[6][3] = &x;
    

    So zeigt, genauso wie bei:

    int (* b)[6][3] = (int(*)[6][3])x;
    

    ... x und b auf die gleiche Speicheradresse.

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.