#include
int max(int,int);
void main()
{
int a=2,b=3;
int(*pmax)(int,int);
pmax=max;
printf("max is %d\n", (*pmax)(a,b));
}
int max(int x , int y)
{
return x>y?x:y;
}
輸出語句裡調用max函數時(*pmax)(a,b)或(pmax)(a,b)都是正確的這是怎麼回事???
例如:void (*fptr)();
把函數的地址賦值給函數指針,可以采用下面兩種形式:
fptr=&Function;
fptr=Function;
取地址運算符&不是必需的,因為單單一個函數標識符就標號表示了它的地址,如果是函數調用,還必須包含一個圓括號括起來的參數表。
可以采用如下兩種方式來通過指針調用函數:
x=(*fptr)();
x=fptr();
第二種格式看上去和函數調用無異。但是有些程序員傾向於使用第一種格式,因為它明確指出是通過指針而非函數名來調用函數的。