如何声明一个像函数中的参数一样接收的数组,该函数也接收指向 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)。
如何声明一个像函数中的参数一样接收的数组,该函数还接收指向 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)。