1. 程式人生 > >函式指標作為函式的引數

函式指標作為函式的引數

指向函式的指標變數 作為函式的形式引數時,可以把相應函式的入口地址作為實參傳遞給函式。當函式指標所指向的目標不同時,在函式中就可以呼叫不同的函式,且不需要對函式體作任何修改。

# include <stdio.h>

int fun(int (*f)(int x), int a, int b)//函式指標(*f)(int x)作為fun函式的形參
{
int t;
t = (*f)(a) + (*f)(b); /*等同於 t = f(a) + (f)(b); 該函式內*號全去也沒問題,但有*號在時必須括起來*/
return(t);
}
int h(int x) //h函式
{
return (x+1);
}
void main(void)
{
int result, (*p)(int x); //定義一個指標函式
p = h; //將h函式入口地址賦給函式指標p(函式名代表該函式的入口地址)
result = fun(p, 2, 3);
/* fun函式呼叫時,第1個實參可以是函式名或同類型的指標。
如:fun(p,2,3)與fun(h,2,3)等價。 */
printf("Result = %d\n", result);
}