Wir werden jetzt darauf eingehen, daß Pointervariablen und Array in einem engen Zusammenhang stehen und lernen dann die Erzeugung von Arrays (nahezu) beliebiger Größe kennen, wobei die Größe erst zur Laufzeit bekannt sein muß.
Bei der Definition eines Arrays wird Speicherplatz für eine bestimmte Anzahl von Objekten im Speicher reserviert. Diese Objekte müssen notwendig alle direkt hintereinander im Speicher stehen.
Der Clou ist, daß eine Arrayvariable im Grunde nur ein Pointer auf das erste Element in diesem Array ist. Methodisch sind also folgende Typen identisch:
int a[10]; // Array aus integern
int* b; // Pointer auf einen Integer;
b = a; // Das ist zulässig!
Auf eine Pointervariable kann dann genauso gut mit dem Indexoperator zugegriffen werden. Dabei ist der Programmierer wieder dafür zuständig nur Indizes zu verwenden, die auch in der Größe des Arrays liegen. Ein solcher Fehler wird i. allg. nur vom Betriebssystem erkannt.
b[5] = 7; // ok
b[20] = 8; // Fehler: Kein Speicherplatz alloziiert
Es soll hier aber ausdrücklich darauf hingewiesen werden, daß dies kein guter Programmierstil ist. Ein Array sollte als Array und ein Pointer als Pointer behandelt werden! Im folgenden wird behandelt, wie mit einem Pointer typgerecht auf eine Reihe von Objekten zugegriffen wird. Warum eine Arrayvariable doch keine normale Pointervariable ist, wird im folgenden Abschnitt erklärt.