Мне нужно выполнить упражнение, в котором у меня есть определенное количество функций, и каждая функция выполняет другую функцию, например сортировку всех отрицательных чисел из массива.Указатель функции в аргументе в C
Кроме того, я должен создать функцию display
с 3-х аргументов указателей на массив, размер его и имя функции, которая принимает int
и что этот вопрос является int
(указатель функции). Я пытаюсь это сделать, но это не работает, и я не знаю, что делать, чтобы правильно выполнить это упражнение с помощью указателя на функцию, потому что я этого не понимаю.
Это мой код
int main (int argc, char **argv)
{
srand (time (NULL));
int arr[MAX_SIZE], second_arr[MAX_SIZE], i;
random_arr (arr);
display (arr, 20, negative_number (arr, second_arr));
system ("PAUSE");
return 0;
}
void random_arr (int *my_arr)
{
int i;
for (i = 0; i < MAX_SIZE; i++) {
*(my_arr + i) = i - 10;
}
}
int negative_number (int *arr, int *sort_arr)
{
int i;
for (i = 0; i < 20; i++) {
if (arr[i] < 0) {
sort_arr[i] = arr[i];
}
}
return sort_arr;
}
void diplay (int *arr, int size, int (*a_function) (int, int))
{
int i = 0;
for (i = 0; i < size; i++) {
printf ("%d\n", a_function);
}
}
a_function на дисплее() функция должна иметь два параметра при вызове, и быть указатель функции должен быть вызван с помощью * нотации, чтобы начать с. – ad3angel1s
также при вызове функции display() вам просто нужно передать указатель функции без аргументов. Я думаю, вам нужно более глубокое понимание синтаксиса указателей функций, прежде чем пытаться разрешить такое упражнение – ad3angel1s
«указатель функции должен вызываться с использованием нотации *, для начала» - нет, это не нужно. –