正文 第35章 指針8(2 / 2)

2.指向函數的指針變量

定義指向函數的指針變量的一般形式為:

數據類型(*指針變量名)();

說明:

(1)這裏的“數據類型”是指函數返回值的類型。

(2)“*指針變量名”兩邊的括號不能丟掉,丟掉了就變成了返回值為指針的函數聲明。

(3)最後的空括號“()”表示指針變量所指的是一個函數。例如:

int(*pf)();

表示pf是一個指向函數的指針變量,被指向的函數的參數個數與類型不限定,隻要該函數的返回值為整型就行。如果希望與函數原型相對應,也可以如下定義指向函數的指針變量:

數據類型(*指針變量名)(參數類型說明);

在該定義方式中,指針變量所指向的函數的參數個數與類型需要明確指定,例如:

float(*pf)(int,int);

3.用指向函數的指針變量調用函數

用指向函數的指針變量調用函數時,隻需將(*指針變量名)代替函數名即可。

[例1017]求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函數。