29 lines
728 B
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;
|
||
|
}
|