小编典典

什么是 C 中的“回调”,它们是如何实现的?

all

根据我所做的阅读,Core Audio 严重依赖回调(和 C++,但这是另一回事)。

我理解设置一个由另一个函数重复调用以完成任务的函数的概念(有点)。我只是不明白它们是如何设置的以及它们是如何工作的。任何示例将不胜感激。


阅读 136

收藏
2022-08-24

共1个答案

小编典典

C 中没有“回调”——不比任何其他通用编程概念更多。

它们是使用函数指针实现的。这是一个例子:

void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
    for (size_t i=0; i<arraySize; i++)
        array[i] = getNextValue();
}

int getNextRandomValue(void)
{
    return rand();
}

int main(void)
{
    int myarray[10];
    populate_array(myarray, 10, getNextRandomValue);
    ...
}

在这里,该populate_array函数将函数指针作为其第三个参数,并调用它以获取用于填充数组的值。我们编写了回调getNextRandomValue,它返回一个随机值,并将指向它的指针传递给populate_array.
populate_array将调用我们的回调函数 10 次并将返回的值分配给给定数组中的元素。

2022-08-24