Указатель на функцию, которая принимает параметры указателя

Я пытаюсь создать указатель на функцию, которая принимает указатель, чтобы удвоить в качестве аргумента. Каков правильный синтаксис для записи в 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);
Другие вопросы по тегам