函数指针的声明方法为:
注1:“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = &func;
callback函数
#include<stdio.h> typedef void (* FUNC_POINTER)(char *); // コーバック関数1 void callback1(char *s){ printf("%s\n",s); } // コールバック関数2 void callback2(char *s){ printf("["); printf("%s",s); printf("].\n"); } // コールバック関数を呼び出す関数 void func(char *s,FUNC_POINTER p){ // コールバック関数を呼び出す p(s); } int main(){ FUNC_POINTER p; p = callback1; // コールバック関数1を呼び出す func("コーバック関数1",p); p = callback2; // コールバック関数2を呼び出す func("コーバック関数2",p); return 0; }