Basis van programmeren in C
void f(int x) { x = 10; }
void g(int *p) { *p = 20; }
int main(void) {
int a = 1, b = 1;
f(a);
g(&b);
printf("%d %d\n", a, b);
return 0;
}Wat is de uitvoer als het bovenstaande programma wordt uitgevoerd?
- A1 20
- B10 1
- C10 20
Antwoord en toelichting tonen
Antwoord: A. 1 20
In C worden de argumenten van een functie als waarde doorgegeven (call by value): de aanroep f(a) kopieert de waarde 1 van a naar x. Als x binnen f op 10 wordt gezet, verandert alleen de kopie, en de a van de aanroeper blijft 1. g(&b) geeft het adres van b door, dus *p = 20 binnen g schrijft naar b zelf, en b wordt 20. Om een variabele van de aanroeper binnen een aangeroepen functie te veranderen, wordt op deze manier een pointer doorgegeven.