我已经看到了回调这里几乎所有流行的问题,但仍然没有得到为什么回调,而不是通过正常的功能只是用来利用回调函数指针。这里是公认的答案(修改)的热门问题仍然没有得到回调与正常的函数调用
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
没有函数指针到他们提供的回调。那么,为什么要用指针功能的方式。
他们俩的工作方式相同 - 他们是函数指针。类似于(在'main'的上下文中)'myarray'和'&myarray'都指向相同的事物。 –
@DrewMcGowen几乎在那里。 “myarray”和“myarray”不指向相同的东西。 – 2013-07-19 15:10:54
所以,为什么人们更喜欢'int(* foo)(void)'而不是'int foo()' –