Basis van programmeren in C
char s[] = "abc", t[] = "xyz";
const char *p = s;
char *const q = s;Na de bovenstaande declaraties wordt een van de statements A „p = t;”, B „*p = 'x';”, C „q = t;” of D „*q = 'x';” geschreven. Welke combinatie geeft compileerfouten?
- AA en D
- BB en C
- CB en D
Antwoord en toelichting tonen
Antwoord: B. B en C
const char *p is een „pointer naar const char”: het teken waarnaar hij wijst, kan niet via p worden gewijzigd, maar p zelf kan naar een ander adres worden veranderd. char *const q is een „const pointer”: q kan niet worden veranderd, maar waarnaar q wijst, kan wel worden gewijzigd. Daarom geven B (toekenning aan *p) en C (toekenning aan q) een fout. Lees het zo: const links van * legt vast waarnaar wordt gewezen, en const rechts van * legt de pointer zelf vast.