C言語-関数ポインタ
5065 ワード
1関数ポインタ関数プロトタイプ:
関数ポインタ:
関数ポインタから関数を呼び出します.
2関数ポインタ配列関数ポインタ配列を宣言するには、関数ポインタ配列名の後に配列サイズを置く必要があります.例:
3変数としての関数ポインタは、関数ポインタを変数として伝達し、ポインタが指す関数に応じて異なる関数を呼び出すことができる.
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