C语言——指向函数的指针
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1函数类型(* 函数指针变量)();//指向函数的入口地址
一个函数是若干语句的集合,经编译后存储在函数代码存储区,并占有一片连续的存储空间,对函数指针只能用函数名赋值而无其他运算
1#include
2
3int max(int x ,int y);
4
5int main()
6{
7int(* p)() ;//定义p是指向函数的指针变量
8int a , b , c ;
9
10p= max ;//将函数max的入口地址赋给指针变量p
11scanf("%d %d",&a ,&b) ;
12c= (* p)(a , b) ;//用指向函数的指针变量p调用函数
13printf("a = %d , b = %d , max = %d", a , b , c);
14
15return0;
16}
17
18int max(int x ,int y)
19{
20int k ;
21k= (x> y)? x : y ;
22
23return k ;
24}
函数名作为实际参数:
1 #include
2
3int fun1(int a , int b)
4 {
5return a+b ;
6 }
7
8int fun2(int (*q)() , int x , int y)
9 {
10return (*q)(x , y) ;
11 }
12
13int main()
14 {
15int (*p)() , k ;
16 p = fun1 ;
17 k = fun2( p , 8 , 5 ) ;
18
19printf("k = %d \n" , k); //输出 13
20
21return0 ;
22 }
设置一个函数proc ,每次调用它会实现不同的功能,输入 a , b 两个数,第一次调用proc时,找出两者中最大者,第二次找出最小者,第三次调用求两数之差:
1 #include
2
3int max(int *x , int *y);
4int min(int *x , int *y);
5int a_b(int *x , int *y);
6int proc(int *x , int *y , int(*p)());
7
8int main()
9 {
10int a , b ;
11
12printf("Enter a and b :");
13scanf("%d %d" , &a , &b);
14
15printf("a = %d \t b = %d \n" , a , b);
16
17printf("max(%d,%d) = " , a , b);
18 proc(&a , &b , max);
19
20printf("min(%d,%d) = " , a , b);
21 proc(&a , &b , min);
22
23printf("%d - %d = " , a , b);
24 proc(&a , &b , a_b);
25
26return0 ;
27 }
28
29int max(int *x , int *y)
30 {
31int k ;
32
33 k = (*x > *y) ? *x : *y ;
34
35return k ;
36 }
37
38int min(int *x , int *y)
39 {
40int k ;
41
42 k = (*x < *y) ? *x : *y ;
43
44return k ;
45 }
46
47int a_b(int *x , int *y)
48 {
49int k ;
50
51 k = *x - *y ;
52
53return k ;
54 }
55
56int proc(int *x , int *y , int (*p)())
57 {
58int q ;
59 q = (*p)(x , y);
60
61printf("%d\n" , q);
62
63return0 ;
64 }
一个简单的主控菜单程序,包括增加,删除,显示,退出
1 #include
2 #include
3 #include
4
5void enter() ;
6void delete() ;
7void review() ;
8void quit() ;
9//void enter() , delete() , review() , quit() ;
10int menu();
11void (*option[])() = {enter , delete , review ,quit} ; 12
13
14int main()
15 {
16int i ;
17while(1)
18 {
19i = menu();