1. 程式人生 > >函式指標 與 指標函式

函式指標 與 指標函式

童鞋們,別搞混了!

函式指標顧名思義:是一個指標指向了一個函式。(這是一個函式,只不過這個函式由一個指標指向它)

當然,此函式的返回值同樣可以返回一個指標 -》一個指標指向了一個指標函式        (真tm繞啊,重在理解)

例子:

  1. /* 
  2.  * 求最大值 
  3.  * 返回值是int型別,返回兩個整數中較大的一個 
  4.  */
  5. int max(int a, int b) {  
  6.     return a > b ? a : b;  
  7. }  
  8. /* 
  9.  * 求最小值 
  10.  * 返回值是int型別,返回兩個整數中較小的一個 
  11.  */
  12. int min(int a, int b) {  
  13.     return
     a < b ? a : b;  
  14. }  
  15. int (*f)(intint); // 宣告函式指標,指向返回值型別為int,有兩個引數型別都是int的函式
  16. int _tmain(int argc, _TCHAR* argv[])  
  17. {  
  18.     printf("------------------------------ Start\n");  
  19.     f = max; // 函式指標f指向求最大值的函式max
  20.     int c = (*f)(1, 2);  
  21.     printf("The max value is %d \n", c);  
  22.     f = min; // 函式指標f指向求最小值的函式min
  23.     c = (*f)(1, 2);  
  24.     printf("The min value is %d \n", c);  
  25.     printf("------------------------------ End\n");  
  26.     getchar();  
  27.     return 0;  
  28. }  

指標函式:   這個函式的返回值是一個指標

例子:

  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.     return p;  
  12. }