我无法做一个动态的函数指针数组,当我有一个指向func_cmp指针的指针时,我很难理解如何使用动态数组函数指针。
int(*func_cmp[])(void *,void*);
numElements++;
func_cmp=(func_cmp*)realloc(func_cmp, numElements*sizeof(func_cmp*));
func_cmp[numElements-1]=*func_cmp;
我不确定realloc系列。
答案 0 :(得分:5)
最清楚的方法是使用typedef
#include <stdlib.h>
typedef int (*functype)(void *a, void *);
functype funcs[100]; // static array
functype *moreFuncs; // dynamic array
int main() {
int capacity = 16; // initial capacity
int n = 0; // initial size
moreFuncs = malloc(capacity*sizeof(functype)); // heap dynamic array
// ...
// adding element and need more space
if (n >= capacity) {
capacity *= 2;
moreFuncs = realloc(moreFuncs, capacity);
moreFuncs[n++] = <address of new function>;
}
}