C語言之指標函式和函式指標
阿新 • • 發佈:2019-01-30
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.回撥函式
函式指標變數可以作為某個函式的引數來使用,回撥函式就是一個通過函式指標呼叫的函式。