Basis van programmeren in C

int is 4 bytes en een pointer is 8 bytes. Als de waarde (het adres) van een pointer p naar int 0x1000 is, wat is dan de waarde van p + 3?

  1. A0x100C
  2. B0x1012
  3. C0x1018
Antwoord en toelichting tonen

Antwoord: A. 0x100C

Als een geheel getal bij een pointer wordt opgeteld, schuift de pointer op in eenheden van de grootte van het type waarnaar hij wijst. int is 4 bytes, dus p + 3 wijst 3 × 4 = 12 bytes verder, naar 0x1000 + 0xC = 0x100C. p + 3 is het adres van het array-element p[3], en *(p + 3) betekent hetzelfde als p[3]. Een pointer naar char schuift telkens 1 byte op, en een pointer naar double (8 bytes) telkens 8 bytes.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren in C

  1. int is 4 bytes en een pointer is 8 bytes. Wat is de uitvoer als het bovenstaande programma wordt uitgevoerd?
  2. int is 4 bytes. Wat is de uitvoer als de bovenstaande code wordt uitgevoerd?
  3. Wat is de uitvoer als de bovenstaande code met een char-array die een string bevat, wordt uitgevoerd?
  4. 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?
  5. Wat is de uitvoer als het bovenstaande programma, dat een array van functiepointers gebruikt, wordt uitgevoerd?