复习函数指针

2.函数指针

顾名思义,函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象。

函数指针的定义如下:

 

  1. int (*f)(int a, int b); // 声明函数指针  
int (*f)(int a, int b); // 声明函数指针

通过与1中指针函数的定义对比可以看到,函数指针与指针函数的最大区别是函数指针的函数名是一个指针,即函数名前面有一个指针类型的标志型号“*”。

 

当然,函数指针的返回值也可以是指针。

上面的函数指针定义为一个指向一个返回值为整型,有两个参数并且两个参数的类型都是整型的函数。

下面是利用函数指针分别求两个整数的最大值和最小值的用法。

 

  1. /* 
  2.  * 求最大值 
  3.  * 返回值是int类型,返回两个整数中较大的一个 
  4.  */  
  5. int max(int a, int b) {  
  6.     return a > b ? a : b;  
  7. }  
  8.   
  9. /* 
  10.  * 求最小值 
  11.  * 返回值是int类型,返回两个整数中较小的一个 
  12.  */  
  13. int min(int a, int b) {  
  14.     return a < b ? a : b;  
  15. }  
  16.   
  17. int (*f)(int, int); // 声明函数指针,指向返回值类型为int,有两个参数类型都是int的函数  
  18.   
  19. int _tmain(int argc, _TCHAR* argv[])  
  20. {  
  21.     printf("------------------------------ Start\n");  
  22.   
  23.     f = max; // 函数指针f指向求最大值的函数max  
  24.     int c = (*f)(1, 2);  
  25.   
  26.     printf("The max value is %d \n", c);  
  27.   
  28.     f = min; // 函数指针f指向求最小值的函数min  
  29.     c = (*f)(1, 2);  
  30.   
  31.     printf("The min value is %d \n", c);  
  32.   
  33.     printf("------------------------------ End\n");  
  34.     getchar();  
  35.     return 0;  
  36. }  
posted @ 2017-03-01 14:17  loanhicks  阅读(201)  评论(0编辑  收藏  举报