C言語-関数ポインタ

5065 ワード

1関数ポインタ関数プロトタイプ:
int sum(int a, int b);

関数ポインタ:
int (*psum)(int,int)=sum;

関数ポインタから関数を呼び出します.
int result=psum(20,30);

2関数ポインタ配列関数ポインタ配列を宣言するには、関数ポインタ配列名の後に配列サイズを置く必要があります.例:
#include

int sum(int,int);
int product(int,int);

int main(void)
{
    int a=10;
    int b=20;
    int (*pfun[2])(int,int);

    pfun[0]=sum;
    pfun[1]=product;

    printf("%d 
"
,pfun[0](a,b)); printf("%d
"
,pfun[1](a,b)); return 0; } int sum(int a,int b) { return a+b; } int product(int a,int b) { return a*b; } // 30 200

3変数としての関数ポインタは、関数ポインタを変数として伝達し、ポインタが指す関数に応じて異なる関数を呼び出すことができる.
#include

int sum(int,int);
int product(int,int);
int any_fun(int (*pfun)(int,int),int,int);

int main(void)
{
    int a=10;
    int b=20;
    int result=0;
    int (*pf[2])(int,int);

    pf[0]=sum;
    pf[1]=product;

    printf("%d 
"
,any_fun(pf[0],a,b)); printf("%d
"
,any_fun(pf[1],a,b)); return 0; } int sum(int a,int b) { return a+b; } int product(int a,int b) { return a*b; } int any_fun(int (*pfun)(int,int),int x,int y) { return pfun(x,y); } // 30 200