2
我想创建一个函数指针,它需要一个指向double的指针作为参数。在main
中写入的正确语法是什么?指针指向一个函数,需要指针参数
这是我有,但它不断吐出错误。
void (*ptr)(double, double, (*double), (*double));
我想创建一个函数指针,它需要一个指向double的指针作为参数。在main
中写入的正确语法是什么?指针指向一个函数,需要指针参数
这是我有,但它不断吐出错误。
void (*ptr)(double, double, (*double), (*double));
这是你将宣布在一个函数的参数列表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);
顺便说一句,有时我发现'typedef'类型对语法上更简单的东西很有帮助。然后,我可以清楚地看到发生了什么,并将原始类型替换回来。例如,'typedef double * double_ptr'使'void(* ptr)(double,double,double_ptr,double_ptr)'清零,然后将'double * '回来显示你正确的语法。 –