参数void*(*)(void*)是一个函数指针,前面的void为返回值类型,后面的void*为参数类型。
指向函数的指针变量的一般定义形式为:数据类型(*指针变量名)(函数参数列表)
函数名是可以缺省的,作为参数传递的时候会去调和void*(*)(void*)这个类型相匹配的函数的。
例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = &func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
扩展资料:
“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。
可是这个一整个就是一个函数的参数啊
难道的函数指针可以使一个函数的参数吗?
函数指针是可以作为某个函数的参数的,你百度下就可以查阅到相关的文章
类似这种
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*),中的函数名可不可以省略的?
追答作为参数的时候是可以省去函数名的,当时在声明的时候不能省去
本回答被提问者和网友采纳