Предположим, у меня есть функция, которая принимает эти параметры.Вызов функционального указателя (синтаксиса)
int create(Ptr * p,void * (*insert)(void *, void *)) {
//return something later
}
И структура:
typedef struct {
void ** ptr;
void * (*insert)(void *, void *));
}Ptr;
Где р указатель на структуру, и вставка является функцией указатель на функцию с двумя общими указателями (недействительными указатели), чтобы вставить целое число в данное дерево (я использую указатели void, потому что в этом случае это целое число, в других случаях это может и не быть).
Как бы я мог вызвать функцию create здесь?
Я знаю, что могу сделать что-то вдоль линий этого для первого параметра:
// в отдельном файле .c
Ptr * pt;
pt = malloc(sizeof(Ptr));
create(pt,....what to put here)?
Если бы я хотел, чтобы передать указатель структуры в качестве аргумента , и целое число, которое нужно вставить вторые (опять же они оба являются указателями void, потому что это общая сборка).
Я думаю, что дизайн является неправильным. Вы должны определить функцию 'insert' и не должны передавать ее в качестве аргумента функции' create' (так как я полагаю, вам не нужно иметь отдельную функцию 'insert' для каждого узла в дереве). – CristiFati