Arrays und Pointer -- Allokation von Arrays -- Pointerarithmetik

Pointerarithmetik (2/3)

int* c = b;                   // c zeigt auf a[0]
c = b;   c += 3;              // c zeigt auf a[3]
c = b;   *c = 7;              // a[0] = 7
c = b;   *(++c) = 8;          // c zeigt auf a[1], a[1] = 8
c = b;   *++c = 7;            // c zeigt auf a[1], a[1] = 7
c = b;   *(c++) = 9;          // c zeigt auf a[1], a[0] = 9 (Postfixinkrementation!)
c = b;   *c++ = 9;            // analog, wegen Operatorrangfolge
c = b;   (*c)++;              // c zeigt auf a[0], a[0] = a[0]+1
c = b;   (*c)++ = 3;          // c zeigt auf a[0], a[0] = 3
                              // (++ wird rückgängig gemacht)
c = b;   ++*c;                // c zeigt
// usw.
b[3] = 7;        // Das ist erlaubt, lieber aber *(b+3) verwenden
a+= 3;           // Das ist verboten: Eine Arrayvariable darf nicht verändert
                 // werden.   T a[10]; entspricht const T* a = new T[10];

Pointerarithmetik ist eine wirklich nette Sache. Insbesondere kann man damit sehr kompakten Code schreiben, der dann aber kaum noch lesbar ist. Ein Standardbeispiel ist das Kopieren eines Strings in einen anderen.