tag example c pointers

example - ¿Qué significa esta declaración C?



seo image alt tag example (5)

Me encontré con esta línea:

void (*(*x)(void (*[10])(int *)))(int *)

¿Alguien puede decirme qué es?


Un puntero a una función que tiene una matriz de 10 punteros a funciones que tiene un argumento int * y un tipo de retorno void como argumento, y devuelve un puntero a una función que tiene un argumento int * y un tipo de retorno void.

Source


Para descomponerlo usted mismo, comience desde el paréntesis más interno y continúe su camino de salida.

  1. (*[10]) <---- Matriz de 10 punteros
  2. (*[10])(int *) <------ Matriz de 10 punteros a funciones que tiene un puntero a int como argumento
  3. (void (*[10])(int *)) <------ Matriz de 10 punteros a funciones que tiene un puntero a int como argumento y devuelve void
  4. (*x)(void (*[10])(int *)) <------- x es un puntero a una función que tiene como argumento (una matriz de 10 punteros a funciones que tiene un puntero a int como argumento y devuelve void )

.....

Me detuve a mitad de camino, pero espero que eso ayude.




cdecl es muy útil para este tipo de cosas. Dice:

declarar x como puntero a la función (matriz 10 del puntero a la función (puntero a int) devolviendo el vacío) retornando el puntero a la función (puntero a int) volviendo vacío