¿Por qué start_routine para pthread_create devuelve void * y toma void *
El encabezado de la función parapthread_create
Se ve como esto:
int pthread_create(pthread_t * thread,
const pthread_attr_t * attr,
void * (*start_routine)(void *),
void *arg);
Lo entiendo todo excepto que el puntero de función parastart_routine
es de la formavoid* (*fpointer) (void*)
lo que significa que toma en unapuntero nulo y devuelve unpuntero nulo.
El puntero de vacío que toma es solo una forma de pasar un argumento a la start_routine, obtengo esa parte, pero no entiendo por qué la función devuelve un puntero de vacío. ¿Qué código notará ese puntero nulo?