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?
- AA und D
- BB und C
- 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.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C