Arrays und Pointer -- Allokation von Arrays -- Pointerarithmetik

Benutzung von new für verschiedene Typen

Wie bei der Deklaration von Pointertypen kann es auch bei der Benutzung des new-Operators zu Schwierigkeiten kommen den Typ richtig anzugeben.

Vorgehensweise: Um einen new-Aufruf für ein einziges Objekt zu erreichen, laßt man den innersten* aus der Pointerdeklaration und den Bezeichnernamen weg. Dieser spezifiziert "ist ein Pointer auf den Typ".

int* a;       // Pointer auf int
a = new int;
int** b;      // Pointer auf Pointer aus int
b = new (int*);

Für einen new-Aufruf, der einen Array erzeugen soll, werden der Dereferenzierungsoperator und der Bezeichnername wie oben enfernt und durch den Indexoperator [] ersetzt mit Angabe der Größe des Arrays

int* a;                 // Pointer auf int
a = new int[3];           // Pointer auf 3 ints
int** b;                // Pointer auf int-Pointer
b = new (int*[3]);        // Pointer auf drei int-Pointer
int (*c)[10];           // Pointer auf 10-Integer-Array
c = new (int ([3])[10]);  // Pointer auf drei 10-Integer-Arrays

Besonders das letzte Beispiel zeigt, daß die Typen nahezu beliebig unübersichtlich werden. Auch wenn nicht immer sofort klar sein sollte, wie ein bestimmter Typ deklariert wird, so wird beim new-Aufruf der Compiler sicher meckern, wenn die Umwandlung nicht funktioniert.