下面是一个问题: 什么是 C 中的“回调”,它们是如何实现的?
该问题的答案之一是这样的:(我也稍作修改以打印该值)
#include <stdio.h>
#include <stdlib.h>
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
for (size_t i=0; i<arraySize; i++) {
array[i] = getNextValue();
printf("%d\n", array[i]); // This is what I added
}
}
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
populate_array(myarray, 10, getNextRandomValue);
}
现在我的问题是上面的回调函数有什么用,什么时候我也可以在没有回调的情况下做到这一点?
#include <stdio.h>
#include <stdlib.h>
void populate_array(int *array, size_t arraySize, int getNextValue(void))
{
for (size_t i=0; i<arraySize; i++) {
array[i] = getNextValue();
printf("%d\n", array[i]);
}
}
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
populate_array(myarray, 10, getNextRandomValue);
}
另外,你能给我一个简单的函数不能完成的回调函数的真实例子吗?