Quote Originally Posted by BIGDENIRO View Post
Like the pthread_create only accepts a pointer to a function and not the function itself, why is that?

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*func)(void*), void *arg);

why not:

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void(func)(void*), void *arg);
There is no such thing as "passing the function itself". A function is just a block of code that exists at some specific location (address) in memory. So in essense when you see a direct function call just think of it as an operation performed on a const (ie: unchangeable) function pointer.