当前位置: 技术问答>linux和unix
多线程调用函数
来源: 互联网 发布时间:2016-08-06
本文导语: int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 这是函数原型,其中 void *(*start_routine)线程执行的函数,关于这种写法,让我不太明白 void (*p),应该是指向函数的指针,void *(*p...
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
这是函数原型,其中 void *(*start_routine)线程执行的函数,关于这种写法,让我不太明白 void (*p),应该是指向函数的指针,void *(*p),是返回无类型的指针的函数指针?
void 应该是无返回,怎么又是有返回呢?
大侠帮个解释解释
这是函数原型,其中 void *(*start_routine)线程执行的函数,关于这种写法,让我不太明白 void (*p),应该是指向函数的指针,void *(*p),是返回无类型的指针的函数指针?
void 应该是无返回,怎么又是有返回呢?
大侠帮个解释解释
|
其实楼主的理解已经接近正确了。他的返回值是void*类型,意思是返回一个指针,这个指针指向的类型是不确定的,可以经过转换把它指向任何类型。
问题的关键在于怎么理解void*类型,这里的void不是“无返回”的概念。
简化一下,void *f(); 这个f就是一个返回void*类型的函数。
或者再简化一下,void *p; 这个p不是“无类型”也不是“无返回”
问题的关键在于怎么理解void*类型,这里的void不是“无返回”的概念。
简化一下,void *f(); 这个f就是一个返回void*类型的函数。
或者再简化一下,void *p; 这个p不是“无类型”也不是“无返回”
|
简单一句:返回的是“无类型”,而不是“不返回”