如果一个函数可以调用另一个函数,为什么还要使用回调函数?

时间:2018-06-24 07:53:32

标签: callback

以下代码是使用函数回调的示例。我不明白为什么需要函数回调,因为一个函数可以调用另一个函数。

int absolute_compare(int a , int b)   // callback function


{
 if (abs(a)>abs(b)) return -1;
 else
 return 1;
}

void sort(int *A, int size, int(*Ab_compare)(int, int))

{
int i,j,temp;
for(i=0;i<size;i++)
for (j=0;j<size-1;j++)
{
if (Ab_compare(A[j],A[j+1])>0)
 {
   temp=A[j];
   A[j]=A[j+1];
   A[j+1]=temp;
  }
 }
}
int main()
{

int A[]={1,7,-5,8,-67,45,34,89,23,-11,2,-8,4};
int size,i;
size=sizeof(A)/sizeof(A[0]);
sort(A,size,absolute_compare);
for (i=0;i<size;i++)
{
 printf("%d   ",A[i]);
}
printf("\n.......\n");
return 0;
}

由于sort()函数可以调用Absolute_compare(),为什么将Absolute_compare()作为参数传递给sort()然后再调用Absolute_compare()?

1 个答案:

答案 0 :(得分:0)

这是为了支持各种回调函数-您可能需要另一个比较函数(我认为没有其他函数可以直接比较整数),并且您将不必实现另一个排序函数。