分享

void*(*)(void*)何解?

 没原创_去搜索 2015-07-05
这是个函数指针     前面的void为返回值类型  后面的void*为参数类型
追问:
可是这个一整个就是一个函数的参数啊
难道的函数指针可以使一个函数的参数吗?
追答:
函数指针是可以作为某个函数的参数的,你百度下就可以查阅到相关的文章

类似这种
typedef void (*FunType)(int ); //. 定义一个函数指针类型FunType,
void CallMyFun(FunType fp,int x);
追问:
我感觉这个函数指针的返回类型应该是void*,最后面括号的里的void*是参数,中间那个(*)代表的是指向函数的指针,那函数名怎么没有的?
int pthread_create(pthread_t*,const pthread_att*,void*(*)(void*),void*):整个就是这样的,帮忙看下哦
追答:
(1) 指向函数的指针变量的一般定义形式为:
  数据类型 (*指针变量名)(函数参数列表)
函数名是可以缺省的 作为参数传递的时候会去调和 void*(*)(void*)这个类型相匹配的函数的
追问:
也就是这个函数指针的返回类型是void* ,参数也是void*?
追答:
是的 作为参数调用这个函数的时候 返回类型是void*  就相当于传了一个参数类型为void*

当然这个函数指针的参数也是void*的
追问:
函数指针,指针函数,指向函数的指针,指针类型的函数的具体区别是是什么呢?
追答:
简单的说:
1.函数指针 指向函数的指针 这两个是一个意思 是表示一个指针, 这个指针他指向的是一个函数
2.而指针函数 是表示一个函数 他的返回值类型为指针
具体的区别你可以百度一下 有好多文章的
追问:
那么int pthread_create(pthread_t*,const pthread_att*,void*(*)(void*),void*):中 参数void*(*)(void*),是一个函数指针,如果单独开说void*(*)(void*);就是一个指针函数对吗?作为函数时候void*(*)(void*),中的函数名可不可以省略的?
追答:
作为参数的时候是可以省去函数名的,当时在声明的时候不能省去

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多