2.指向函數的指針變量
定義指向函數的指針變量的一般形式為:
數據類型(*指針變量名)();
說明:
(1)這裏的“數據類型”是指函數返回值的類型。
(2)“*指針變量名”兩邊的括號不能丟掉,丟掉了就變成了返回值為指針的函數聲明。
(3)最後的空括號“()”表示指針變量所指的是一個函數。例如:
int(*pf)();
表示pf是一個指向函數的指針變量,被指向的函數的參數個數與類型不限定,隻要該函數的返回值為整型就行。如果希望與函數原型相對應,也可以如下定義指向函數的指針變量:
數據類型(*指針變量名)(參數類型說明);
在該定義方式中,指針變量所指向的函數的參數個數與類型需要明確指定,例如:
float(*pf)(int,int);
3.用指向函數的指針變量調用函數
用指向函數的指針變量調用函數時,隻需將(*指針變量名)代替函數名即可。
[例1017]求a和b中的較大者。
voidmain()
{
intmax(int,int);
inta,b,c;
int(*pf)(int,int);
pf=max;
scanf("%d,%d",&a,&b);
c=max(a,b);/*用函數名調用函數*/
printf("a=%d,b=%d,max=%d\n",a,b,c);
c=(*pf)(a,b);/*用指向函數的指針變量調用函數*/
printf("a=%d,b=%d,max=%d\n",a,b,c);
}
intmax(intx,inty)
{
intz;
if(x>y)
z=x;
else
z=y;
returnz;
}
程序分析:首先定義一個指向函數的指針變量pf;然後將函數指針max賦給它,這樣指向函數的指針變量就指向了max函數,最後用(*pf)來調用max函數。