Grundlagen der Programmiersprache C

char s[] = "abc", t[] = "xyz";
const char *p = s;
char *const q = s;

Nach den obigen Deklarationen wird eine der Anweisungen A „p = t;“, B „*p = 'x';“, C „q = t;“ oder D „*q = 'x';“ geschrieben. Welche Kombination führt zu Kompilierfehlern?

  1. AA und D
  2. BB und C
  3. CB und D
Antwort und Erläuterung anzeigen

Antwort: B. B und C

const char *p ist ein „Zeiger auf const char“: Über p kann das Zeichen, auf das er zeigt, nicht geändert werden, p selbst kann aber auf eine andere Adresse gesetzt werden. char *const q ist ein „konstanter Zeiger“: q kann nicht geändert werden, das, worauf q zeigt, aber schon. Deshalb führen B (Zuweisung an *p) und C (Zuweisung an q) zu Fehlern. Merkregel: Steht const links vom *, ist das Ziel unveränderlich, steht es rechts davon, der Zeiger selbst.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. Welche Ausgabe erzeugt das obige Programm mit einem Array von Funktionszeigern bei der Ausführung?
  2. fill und use seien separat definierte Funktionen. Welches Problem hat die obige Funktion?
  3. Was trifft auf den Zeiger zu, den die obige Funktion make zurückgibt?
  4. Warum wird in C empfohlen, unmittelbar nach free(p); die Anweisung p = NULL; zu schreiben?
  5. Der obigen Funktion save wird die Zeichenkette "ABCDEFGH" mit 8 Zeichen übergeben. Was passiert?