Bases de la programmation en 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;
}Quelle est la sortie obtenue en exécutant le programme ci-dessus, qui utilise un tableau de pointeurs de fonction ?
- A3
- B6
- C12
Afficher la réponse et l'explication
Réponse : C. 12
op est un tableau de deux pointeurs sur des fonctions qui prennent deux int et renvoient un int ; op[0] contient l'adresse de add et op[1] celle de mul. op[i](r, 3) appelle la fonction pointée. Pour i = 0, r = add(1, 3) = 4, puis pour i = 1, r = mul(4, 3) = 12. Les pointeurs de fonction servent aux tables d'aiguillage des traitements, aux vecteurs d'interruption, aux fonctions de rappel (callbacks), etc.
Continuer : 9 autres questions sur Bases de la programmation en C