/*author:李傻傻傻傻傻傻傻傻傻傻傻…… 傻傻子 ╭(╯^╰)╮*/
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<time.h>
4 #define MAXSIZE 20
5 typedef void(*enum_proc)(int i, int* val, void* context);
6
7 void enum_array(int a[], int length, enum_proc proc, void* context) {
8 int i;
9 for (i=0; i<length; i++) {
10 proc(i, a+i, context);
11 }
12 }
13
14 void _comp(int i, int *val, void* context) {
15 int *max = (int*)context;
16 *max = (*val>*max) ? *val : *max;
17 }
18
19 int max_in_array(int a[], int length) {
20 int max = 0;
21 enum_array(a, length, _comp, &max);
22 return max;
23 }
24 void _rand_elem(int i, int *val, void*context) {
25 *val = 1+rand()%100;
26 }
27 void rand_array(int a[],int length)
28 {
29 enum_array(a, length, _rand_elem, NULL);
30 }
31
32
33 void _print_elem(int i, int *val, void* context) {
34 printf("%d ", *val);
35 }
36 void print_array(int a[],int length)
37 {
38 enum_array(a, length, _print_elem, NULL);
39 printf("\n");
40 }
41
42
43 int main()
44 {
45 int a[MAXSIZE];
46 time_t t;
47 srand((unsigned)time(&t));
48 rand_array(a,MAXSIZE);
49 print_array(a,MAXSIZE);
50 printf("max value = %d\n", max_in_array(a, sizeof(a) /sizeof(a[0])));
51
52
53 }
某人说回调函数是为了代码复用,,,,,我暂时是没有看出来的除了增加除了增加代码阅读难度以外, 记上一笔。
刚刚发现c库函数 qsort也是一个回调函数,,,
qsort 的函数原型是
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 我们需要自己再写一个排序规则你们可以自己去看看这个人类写的回调函数以及qsort,某傻子代码还没有写完似乎还在调bug 希望 不要改对哈哈哈哈哈哈哈哈哈哈哈,,,,,,,,我继续瞎瞅瞅,