Basis van programmeren in C
int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
int main(void) {
int (*op[2])(int, int) = {add, mul};
int r = 1;
for (int i = 0; i < 2; i++)
r = op[i](r, 3);
printf("%d\n", r);
return 0;
}Wat is de uitvoer als het bovenstaande programma, dat een array van functiepointers gebruikt, wordt uitgevoerd?
- A3
- B6
- C12
Antwoord en toelichting tonen
Antwoord: C. 12
op is een array van twee pointers naar functies die twee ints aannemen en een int teruggeven; op[0] bevat het adres van add en op[1] dat van mul. op[i](r, 3) roept de functie aan waarnaar de pointer wijst. Met i = 0 is r = add(1, 3) = 4, en met i = 1 is r = mul(4, 3) = 12. Functiepointers worden gebruikt voor dispatchtabellen, interruptvectoren, callbacks en dergelijke.