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?

  1. AA en D
  2. BB en C
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren in C

  1. Wat is de uitvoer als het bovenstaande programma, dat een array van functiepointers gebruikt, wordt uitgevoerd?
  2. fill en use zijn elders gedefinieerde functies. Wat is een probleem van de bovenstaande functie?
  3. Wat is juist over de pointer die de bovenstaande functie make teruggeeft?
  4. Wat is in C de meest passende reden waarom wordt aangeraden om direct na free(p); de regel p = NULL; te schrijven?
  5. De string "ABCDEFGH" van 8 tekens werd aan de bovenstaande functie save doorgegeven. Wat gebeurt er?