hi,
the first of my question is about pointers to functions

i dont even know why do we need them
cant we just use functions as one of the arguments to another function

if we need to use pointers to functions to use as them arguments how do we declare these pointer and what is the right syntax to pass function pointers to functions

do we have to use void as pointer's function arguments like

int(*comp)(void*,void *)

are function names, pointers to their functions?

i would be very grateful if you could tell me how to define and use pointers to functions

my second question is
what is this

((void**)lineptr)

if lineptr is declared like this

char *lineptr[]
a character pointer array


is this a redeclaration of the type this array?
can we rearrange the types like this


thank you