函数指针 —— 《C和指针》
函数指针 函数指针是指向函数的指针。 因此“函数指针”本身首先是指针变量,只不过该指针变量指向函数。 声明 返回值类型 ( *指针变量名) (形参列表); int (*pfunc)(int x); int (*pfunc)(int); //无需将形参名给出 初始化 和普通指针一样,函数指针在使用之前必须初始化为指向某个函数。 int func(int x); //被指向的函数 pfunc = func; //初始化函数指针pfunc,使其指向函数func pfunc = &func; //也是正确的 int (*pfunc)(int) = func; //也可以直接在声明时进行初始化 注意:在函数指针初始化之前需要有被指向函数func的原型,否则编译器就无法检查func的类型是否和pfunc所指向的类型一致。 使用: int ans; ans = func(5); ans = pfunc(5); ans = (*pfunc)(5); //也是正确的,但间接访问操作是不必要的 注意:在初始化赋值语句中的操作符 & 和调用函数指针时的 * 操作符都是可选的: 1. 函数名被使用时总是由编译器把它转换为函数指针。 & 只是显示地说明了编译器将隐式执行的任务。 2. * pfunc把函数指针pfunc转换为一个函数名,编译器在执行函数调用之前又会把它转换回去。因此这个转换是不必要的。