回调函数
概念
回调的本质是 “函数可以像变量一样被传递”。
同步回调:主函数调用后,立即执行回调(如排序中的比较函数),是 “顺序执行” 的一部分。
异步回调:主函数调用后返回,回调在未来某个事件发生时执行(如按钮点击、网络响应),通常涉及多线程或事件循环。

代码理解
#include <stdio>
typedef int (*CompartFunc)(int ,int);
//
int ascending(int a , int b )
{
return a>b; //如果a>b ,返回1
}
int descending(int a , int b)
{
return a<b; //如果a< b ,返回1
}
void sort(int arr[] , int length , CompartFunc compare)
{
for(int i = 0 ; i <= length ; i++)
{
for(int j = 0 ; j <length -i-1 ; j++)
{
if(compare(arr[j] , arr[j+1]))
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void printArray(int arr[], int length)
{
for (int i = 0; i < length; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = {3, 1, 4, 1, 5, 9};
int length = sizeof(arr) / sizeof(arr[0]);
// 5. 调用排序函数,分别传入不同的回调函数
printf("升序排序后:");
sort(arr, length, ascending); // 传入升序回调
printArray(arr, length);
printf("降序排序后:");
sort(arr, length, descending); // 传入降序回调
printArray(arr, length);
return 0;
}

浙公网安备 33010602011771号