这是问的问题: What is a “callback” in C and how are they implemented?
并且该问题的答案之一是这样的: (我稍微修改了打印值)
#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);
}
另外,你能不能给我一个简单函数无法完成的回调函数的实例?
答案 0 :(得分:3)
现在我的问题是上面有什么回调函数的使用,当我可以在没有回调的情况下做到这一点?
没什么,真的 - 这不是一个真实的例子,它只是为了解释回调是如何工作的。
另外,你能不能给我一个简单函数无法完成的回调函数的实例?
cURL library在需要用户提供数据时(例如,在发出HTTP POST请求时)或者想要通知用户数据检索时(使用读取,写入和各种其他回调函数)例如,当服务器发送HTTP头时)。虽然这可以使用临时缓冲区,动态内存分配和“属性设置器”功能来完成,但使用回调函数方法更方便(即它需要更少的工作量)。