我想知道如何在C中声明一个动态函数指针列表?使用指向函数指针的指针?
答案 0 :(得分:2)
指向函数指针的指针,您可以使用该指针指向动态分配的内存块。假设函数类型为void (int)
:
void (*(*))(int) // Bare type
void (*(*f))(int) // Variable
或者你可能想要一个数组来运行指针,在这种情况下:
void (*[10])(int) // Bare type
void (*af[10])(int) // Variable
您可以更改参数和函数的返回类型。
函数指针数组可用作从数字到要执行的函数的映射。这是进行仿真的一种方法 - 例如,从指令中获取OP代码后,可以使用指针数组执行操作。 (这是一种方法,但我不确定它是否实际上是在仿真代码中完成的。)
答案 1 :(得分:1)
是的,您可以拥有一系列函数指针。
这可能很有用,例如为特定事件收集一组回调函数。
作为示例,请考虑在浏览器中对DOM元素实施addEventListener
,其中任何DOM元素都可以有多个click
事件。一个简单的数据结构可能是:
void (*clickHandlers[MAX_EVENT_HANDLERS])(EventData arg);
对于动态列表,然后使用malloc
和realloc
分配函数指针的缓冲区,因为您需要更多空间:
void (**clickHandlers)(EventData arg);
答案 2 :(得分:1)
对于动态列表,您可以使用基本链接列表:
struct list {
int (*func)(int, float, double);
struct list *next;
}
或者根据需要调整大小的函数指针数组。