请不要在意或严格修改语法。更重要的一点是为什么回调函数的名称回调?
例如: -
function drive(int x, int y);
function breaker(int x, int y, callbackFunction);
int function main(){
drive(23,24); // why is this called a "call to a function"?
breaker(23,45,drive); // why "drive" here is called a callback and why not "call to function" like other function.
}
function drive(int x, int y){
printf("%d%d",x,y);
}
function breaker(int x, int y, callbackFunction){
callbackFunction(x,y);
}
这里的要点不是语法的准确性。关键是我在main方法中调用“驱动器”,并将其称为“调用函数”,当我将“drive”函数作为参数传递给“breaker”中的其他函数时,“drive”被称为回调但为什么?对函数的任何调用都必须引用函数并且应该执行它,但为什么名称不同?
答案 0 :(得分:3)
breaker(23,45,drive); // why "drive" here is called a callback and why not "call to function" like other function.
这不会调用drive()
。这是对breaker
的调用,函数drive
的地址作为参数。括号的绝对表示我们没有调用驱动器,我们将函数的地址作为参数传递。
这样做的目的是让breaker()
可以根据需要多次调用drive()
。
修改强>
名称回调是因为您正在调用的函数正在调用您的函数。当带有回调参数的函数由其他人提供时,这一点更为明显。
以qsort
函数为例。 qsort
是一个标准的C函数,它接受比较器回调函数和数组进行排序。只要需要比较数组中的两个元素,就可以调用qsort()
和qsort()
来调用比较器。因此,标准C函数会回调代码。
答案 1 :(得分:0)
breaker(23,45,drive);
这将用call
替换callbackFunctionfunction breaker(int x, int y, drive){
drive(x,y);
}