Tableau de fonctions en C
Résolu
UNIX/VI/SHELL
Messages postés
89
Statut
Membre
-
UNIX/VI/SHELL Messages postés 89 Statut Membre -
UNIX/VI/SHELL Messages postés 89 Statut Membre -
Bonjour,
Je voudrais réaliser un programme; Dans ce programme il faudrait appeler des fonctions en fonction d'une autre variable, en utilisant un tableau de fonctions.
Comment feriez-vous ? Avec un peu de code.
Je voudrais réaliser un programme; Dans ce programme il faudrait appeler des fonctions en fonction d'une autre variable, en utilisant un tableau de fonctions.
Comment feriez-vous ? Avec un peu de code.
Configuration: Mac OS X Safari 523.12.2
2 réponses
-
Salut,
Exemple, on a deux nombres (3 et 5), si l'utilisateur rentre +, on fait l'addition, s'il rentre *, on fait la multiplication:#include <stdio.h> typedef int (*op)(int, int); // Type pointeur vers fonction qui prend deux entiers en paramètres et retourne un entier int addition(int a, int b) { return a + b; } int multiplication(int a, int b) { return a * b; } //Tableau de pointeur de fonctions avec nos deux fonctions: op tab_op[] = { addition, multiplication }; int main() { int a = 3, b = 5; char c = getchar(); switch (c) { case '+': printf("%d\n", tab_op[0](a, b)); break; case '*': printf("%d\n", tab_op[1](a, b)); break; default: printf("%c toi même!\n", c); break; } return 0; }-
Le même sans typedef:
#include <stdio.h> int addition(int a, int b) { return a + b; } int multiplication(int a, int b) { return a * b; } //Tableau de pointeur de fonctions avec nos deux fonctions: int (*tab_op)(int, int) [] = { //Etrange hein? addition, multiplication }; int main() { int a = 3, b = 5; char c = getchar(); switch (c) { case '+': printf("%d\n", tab_op[0](a, b)); break; case '*': printf("%d\n", tab_op[1](a, b)); break; default: printf("%c toi même!\n", c); break; } return 0; } -
-
-