1. 程式人生 > >C語言之指標函式和函式指標

C語言之指標函式和函式指標

1.指標函式:本質是一個函式。函式返回型別是某一型別的指標

       格式:型別識別符號  * 函式名(引數表)

       int *f(int x, int y);

int *fun();
int *p;
p = fun();

      當一個函式宣告其返回值為一個指標時,實際上就是返回一個地址給呼叫函式,用於需要該指標或地址的表示式中。

2.函式指標是指向函式的指標變數,即本質是一個指標變數

      格式:型別說明符  (*函式名)(引數表)

      int (*f)(int x);

指向函式的指標包含了函式的地址,可以通過它來呼叫函式。其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向一個整型值的函式地址。指標的宣告必須和它指向函式的宣告保持一致。

int Max(int a, int b)
{
    return a>b?a:b;
}
int main()
{
    int num = 0;
    int (*MaxValue)(int m, int n) ;

    num = MaxValue(3,4);
    printf("最大數字是: %d\n", num);
}

指標名和指標函式運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了一個返回整型指標的函式宣告。辨別方法就是看函式名前面的指標“*”號有沒有被括號"()"包含,如果被包含就是函式指標,反之則是指標函式。

3.回撥函式

函式指標變數可以作為某個函式的引數來使用,回撥函式就是一個通過函式指標呼叫的函式。