如何声明一个像函数中的参数一样接收的数组,该函数也接收指向 C 中函数的指针?

How to declare an array that is received like parameter in a function that also receive a pointer to a function in C?

如何声明一个像函数中的参数一样接收的数组,该函数还接收指向 C 中函数的指针,并且该函数正在使用数组中的值? 使用数组中的值的函数不接收参数。 它是这样的:

int find_array(void)

并且像参数一样接收这个函数的函数也接收数组。我认为声明应该类似于:

int function ( int (*pmin)(void), int* array )

函数find_array如何知道它应该与接收到的类似参数的数组一起工作?如何声明这个数组?

int function should receive just 2 parameters, a pointer to function find_array and the array. I should also to find a way to declare the size of the array

必须扩展到三个参数才能给出数组的大小:

#include <stdio.h>

// simple function working on an array
int find_minimum(int *array, int n) {
    int minimum = array[0];
    for (int i = 1; i < n; i++) {
        if (array[i] < minimum) {
            minimum = array[i];
        }
    }
    return minimum;
}

// function receiving an array and a function to process it
int function(int (*pmin)(int *array, int n), int *array, int n) {
    return pmin(array, n);
}

int main() {
    int array[] = {1, 2, -3, 4, 5};
    int min = function(find_minimum, array, sizeof array / sizeof(int));
    printf("minimum: %d\n", min);
return 0;
}

看起来不错:

$ gcc -Wall -Werror array.c
$ ./a.out                  
minimum: -3
$ 

关于要作为参数提供的函数的参数,您可能希望对可变数量的参数使用省略号,请参阅 https://en.wikipedia.org/wiki/Ellipsis_(computer_programming)