是指向函数的指针变量,即重点是一个指针。一种特殊的指针,它指向函数的入口;
要声明指向特定类型的函数指针,能够首先编写这个函数的原型,而后用(*p)来替换函数名,这样p就是这类函数的指针。ios
//格式:类型说明符 (*函数名)(参数) int (*f) (int x);
指向函数的指针包含了函数的地址,能够经过它来调用函数,其实这里不能称为函数名,应该叫作指针的变量名。这个特殊的指针指向一个返回整型值的函数实现地址。指针的声明笔削和它指向函数的声明保持一致。函数
#include <iostream> /* * 定义一个函数指针p,只能指向返回值为int,形参为两个int的函数 */ int(*p)(int, int); /* * 求最大值 * 返回值是int类型,返回两个整数中较大的一个 */ int max(int a, int b) { return a > b ? a : b; } /* * 求最小值 * 返回值是int类型,返回两个整数中较小的一个 */ int min(int a, int b) { return a < b ? a : b; } int main(){ p = max; // 函数指针f指向求最大值的函数max int c = (*p)(1, 2); std::cout << c << std::endl; //p = min; // 函数指针f指向求最小值的函数min //c = (*f)(1, 2); //std::cout << c << std::endl; }
就是指针的函数,表示是一个函数,函数返回类型是某一类型的指针
返回指针的函数,一个函数,它的返回值是指针;指针
//格式:类型标识符 *函数名(参数表) int *f(x,y);
#include <iostream> /* * 指针函数的定义 * 返回值是指针类型int * */ int *f(int a, int b) { int *p = (int *)malloc(sizeof(int)); memset(p, 0, sizeof(int)); *p = a + b; return p; } int main(){ int *p1 = NULL; p1 = f(1, 2); std::cout << *p1 << std::endl; }
注意:回调函数要么是全局函数,要么是静态函数!
code