C语言——指向函数的指针

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 //包含system函数

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();

相关文档
最新文档