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?
- A0x100C
- B0x1012
- 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.