C語言允許透過一個函式指標指向函式記憶體位址,宣告方法如下:
#include <stdio.h>
int func( int a,int b) { return(a+b); }
int main() { int ans; int (*pfunc)(int,int); /* 宣告pfunc函式指標 */ pfunc = func; /* pfunc 指向 func函式起始位址*/ ans = pfunc(2,4); printf("ans= %d",ans);
return 0; }
也可以用typedef的方法來宣告,宣告方法如下:
#include <stdio.h>
int func( int a,int b) { return(a+b); } int main() { int ans; typedef int (*Tfunc)(int,int); Tfunc pfunc; pfunc = func; ans = pfunc(2,4); printf("ans= %d",ans);
return 0; }
函式指標實現C語言的多型:
#include <stdio.h>
int fun(int *a,void (*funp)(int *a)); int inc(int *a); int dec(int *a);
int inc(int *a) { ++(*a); } int dec(int *a) { --(*a); }
int fun(int *a,void (*funp)(int *a)) /*funp式函式指標*/ { funp(a); }
int main() { int a =10;
fun(&a,inc); fun(&a,inc); fun(&a,inc);
fun(&a,dec);
printf("a=%d",a); return 0; }
/*資料一開始為10,結果a為12*/
|