函数指针 与 指针函数

来源:互联网 发布:百度算法调整2017 编辑:程序博客网 时间:2024/05/16 04:41

  

童鞋们,别搞混了!


函数指针顾名思义:是一个指针指向了一个函数。(这是一个函数,只不过这个函数由一个指针指向它)

当然,此函数的返回值同样可以返回一个指针 -》一个指针指向了一个指针函数        (真tm绕啊,重在理解)

例子:


  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)(intint); // 声明函数指针,指向返回值类型为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. }  

指针函数:   这个函数的返回值是一个指针

例子:

  1. /* 
  2.  * 指针函数的定义 
  3.  * 返回值是指针类型int * 
  4.  */  
  5. int *f(int a, int b) {  
  6.     int *p = (int *)malloc(sizeof(int));  
  7.     printf("The memeory address of p = 0x%x \n", p);  
  8.     memset(p, 0, sizeof(int));  
  9.     *p = a + b;  
  10.     printf("*p = %d \n", *p);  
  11.   
  12.     return p;  
  13. }  

0 0
原创粉丝点击