#include<stdio.h>
typedef struct
{
int num;
int *p_num;
}sdata;
int arr[5] = {
1, 4, 5, 7, 3
};
int print(int *p_num, void *p_data)
{
printf("%d ", *p_num);
return 0;
}
int clear(int *p_num, void *p_data)
{
*p_num = 0;
return 0;
}
int sum(int *p_num, void *p_data)
{
*(int*)p_data += *p_num;
return 0;
}
int search(int *p_num, void *p_data)
{
if(*p_num == ((sdata*)p_data) -> num)
{
((sdata*)p_data) -> p_num = p_num;
return 1;
}
return 0;
}
void for_each(int (*p_func)(int*, void*), void *p_val)
{
int *p_num = NULL;
for(p_num = arr;p_num < arr + 5;p_num++)
{
if(p_func(p_num, p_val))
{
break;
}
}
}
int main()
{
int num = 0;
sdata sd = {7, NULL};
for_each(search, &sd);
printf("找到的结果是:%d\n", *sd.p_num);
for_each(sum, &num);
printf("求和结果为:%d\n", num);
for_each(clear, &num);
for_each(print, &num);
printf("\n");
return 0;
}