Then, maybe this is only a play with parentheses,where void *fn(char *) is a declaration of a function and this function is referencing system, i think
void (*fn)(char *)
is not a function , it is a function pointer. You can refer here to learn about function pointers.. And ()
do matter here you can't ignore them .
But why the parameter (char*) have no name? this is permitted?
Yes ,it is allowed to do so . Its name is not that important but its type is.