如何宣告一個像函式中的引數一樣接收的陣列,該函式還接收指向 C 中函式的指標,并且該函式正在使用陣列中的值?使用陣列中的值的函式不接收引數。它是這樣的:
int find_array(void)
接收此函式的函式(如引數)也接收陣列。我認為該宣告應類似于:
int function ( int (*pmin)(void), int* array )
函式如何find_array知道它應該與接收到的類似引數的陣列一起作業?如何宣告這個陣列?
uj5u.com熱心網友回復:
int 函式應該只接收 2 個引數,一個指向函式 find_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)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480182.html
