回调函数

概念

回调的本质是 “函数可以像变量一样被传递”。

同步回调:主函数调用后,立即执行回调(如排序中的比较函数),是 “顺序执行” 的一部分。

异步回调:主函数调用后返回,回调在未来某个事件发生时执行(如按钮点击、网络响应),通常涉及多线程或事件循环。

img

代码理解

#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;
}

posted @ 2025-09-01 00:47  开心猪扒  阅读(7)  评论(0)    收藏  举报