// 函数指针
// 应用场景: 函数回调
// 函数指针的表示: int (*函数指针名)(形参类型列表)
#include <stdio.h>

void callback(int item, int index)
{
    printf("%d->%d\n", index, item);
}

void callback2(int item, int index)
{
    printf("item %d->%d\n", index, item);
}

// void (*func)(int, int) 表示函数指针，形参的函数名为 func
void forEach(int a[], int size, void (*func)(int, int))
{
    for (int i = 0; i < size; i++)
        func(a[i], i); // 回调函数
}

int main(int argc, char const *argv[])
{
    int arr[] = {3, 2, 1, 5, 4};
    int size = sizeof(arr) / sizeof(arr[0]);
    forEach(arr, size, callback2); // callback2 将存储此函数的空间地址给 func
    return 0;
}