如何创建函数指针的动态数组?

时间:2015-05-16 15:57:40

标签: c function dynamic

我无法做一个动态的函数指针数组,当我有一个指向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系列。

1 个答案:

答案 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>;
  }
}