我正在尝试创建一个函数指针,该指针接受一个指向double的指针作为参数。在main
中编写的正确语法是什么?
这就是我所拥有的,但它不断吐出错误。
void (*ptr)(double, double, (*double), (*double) );
答案 0 :(得分:8)
这与在函数的参数列表中声明double *
参数的方式相同:
void (* ptr) (double, double, double *, double *);
可以分配给以下功能:
void something (double w, double x, double *py, double *pz) {
}
在一般情况下,无论它有多复杂,都是如此。例如,一个指向函数的指针,该函数接受int
和另一个函数指针(指向一个函数,该函数指向double
和void *
并返回char*
)作为参数:
void (* ptr) (int, char * (*) (double, void *));
然后:
char * g (double w, void *) {
...
}
void f (int x, char * (* y) (double, void *)) {
...
}
// usage, elsewhere:
ptr = &f;
ptr(0, &g);