注意:函数指针是C语言的语法,无法把C++类的函数地址赋给一个函数指针变量,其不支持通过命名空间来访问一个类的函数/方法。
问题来源:线程创建函数, pthread_create(pthread_t *id,pthread_attr_t *attr,void *(*func)(void *),void *arg);的参数
void *(*func)(void *):是个指向函数地址的指针,此函数地址是线程开始执行的起始函数地址。起始函数的地址由func确定。
第一个void*是函数的类型,而函数是个无名的函数;
第二个void*是函数的形参;
func只是一个指针,指向形参为void*返回值为void*的函数的指针;
函数指针初始化:
void* Function(void*){
};
int (*p_function)(void*) = Function;//初始化p_funtion函数,直接把p_function执行Function。
函数指针模板定义:
typedef void* (*pFun)(void*);
上函数指针初始化可写成:
pFun p_function = Function;