qfedu-c-level/day9/d1.c

29 lines
728 B
C

// 函数指针
// 应用场景: 函数回调
// 函数指针的表示: 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;
}