Указатель на функцию, которая принимает параметры указателя
Я пытаюсь создать указатель на функцию, которая принимает указатель, чтобы удвоить в качестве аргумента. Каков правильный синтаксис для записи в main
?
Это то, что у меня есть, но оно продолжает выплевывать ошибки.
void (*ptr)(double, double, (*double), (*double) );
1 ответ
Это так же, как вы бы объявили 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);