先复习一下指针, * 在定义指针时(如int *p)是和前面的类型名int是合为一体的, 类型名为int *,变量名为p,除了在定义指针变量时,*均为取值操作,取对应地址中存放的值 。
分为两种
1 定义函数指针类型
typedef int (*fp) (int x)
fp fp_a;
int func (int x) {printf("x = %d\n", x); return 0;}
fp_a=fp;
fp_a(x);
2 定义函数类型
typedef int (func) (int x)
func *func_a;
int fa (int x) {printf("x = %d\n", x); return 0;}
func_a=fa;
func_a(x);
总结一下,两种方式都是为了定义函数指针,第一种声明就是指针类型,定义时直接fp Fp,第二种声明是函数类型,定义时需加*(fp *Fp)表示定义函数指针类型