Stefanie: C , Zeigerzugriff

Beitrag lesen

Dagegen funktioniert folgendes nicht:
  char *bla="Diese Zeichenkette ist schreibgeschuetzt!\n";

Natürlich nicht. Denn mit der Deklaration char* wird nur ein Pointer auf ein char angelegt und kein Array wie mit

char bla[100];

(wie Du ja schon selbst bemerkst). Die Zeichenkette oben ist nicht etwas "schreibgeschützt", sondern gar nicht existent, denn beim Versuch bla damit zu initialisieren tritt der Speicherfehler auf. Ein String muss in C in einem Array, sprich in einem Buffer abgelegt sein. Bei der Initialisierung direkt bei der Deklaration bestimmt C praktischerweise auch ohne Längenangabe selber die Größe des String-Arrays. Aber eine Zeichenkette kannst Du natürlich nicht in einen Pointer, also in einen Adresswert schreiben, der nur wenig Byte groß ist.

Grüsse
Stefanie