我在这里看到了几乎所有流行的回调问题,但仍然不明白为什么在回调中使用函数指针而不是简单地通过普通函数使用回调。这是一个热门问题 的公认答案(修改后)
void populate_array(int *array, size_t arraySize,
int getNextValue(void)) // Note that, here I use normal function call.
{
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);
...
}
正如你在上面看到的,我仍然可以通过简单的函数实现回调实现,那么为什么要使用函数指针来实现回调。(即为什么要通过参考),当我可以做到这一点时。
此外,我们可以qsort, bsearch
在没有函数指针的情况下实现以在其中提供回调。那么,为什么要使用指向函数的方式。