54 votes

Comment définir un tableau de pointeurs de fonction en C

J'ai une petite question. J'essaie de définir dynamiquement un tableau de pointeurs de fonction avec calloc . Mais je ne sais pas comment écrire la syntaxe. Merci beaucoup.

5voto

Andres Points 2253

je mets un petit exemple ici qui pourra t'aider

 typedef void (*fp)(int); //Declares a type of a void function that accepts an int

void test(int i)
{
    printf("%d", i);
}

int _tmain(int argc, _TCHAR* argv[])
{
    fp function_array[10];  //declares the array

    function_array[0] = test;  //assings a function that implements that signature in the first position

    function_array[0](10); //call the cuntion passing 10

}

1voto

pmg Points 52636

En supposant que toutes vos fonctions sont de type void ()(void) , quelque chose comme ça

 typedef void (*fxptr)(void);
fxptr *ptr; // pointer to function pointer
ptr = malloc(100 * sizeof *ptr);
if (ptr) {
    ptr[0] = fx0;
    ptr[1] = fx1;
    /* ... */
    ptr[99] = fx100;

    /* use "dynamic array" of function pointers */

    free(ptr);
}

1voto

Armen Tsirunyan Points 59548
typedef R (*fptr)(A1, A2... An);

où R est le type de retour, A1, A2... An sont les types d'arguments.

 fptr* arr = calloc(num_of_elements,sizeof(fptr));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X