C++ 函数指针

指针有很多种:整型指针、结构体指针、数组指针等等,它们的本质是它们的值都是一个地址,只不过整形指针的值是一个int型数据的地址,结构体指针的值是一个结构体变量的地址,而这里的函数指针指向的不是一个固定类型数据的地址了,而是一个函数的入口地址。

例如:int(*p)(int,int)这个语句就定义了一个指向函数的指针变量p。

在平时的程序设计中,经常遇到函数指针。

**2.函数指针使用的例子**上面我们定义了一个函数指针,但如何来使用它呢?先看如下例子:includeincludechar*fun(char*p1,char*p2)参考:陈正冲老师的《c语言深度剖析》。

例如:(*f)(x);(x必须先赋值)【例】任意输入n个数,找出其中最大数,并且输出最大数值。

void(*pf2)(int)=ff;//错误:没有任何一个ff与该形参列表匹配double(*pf3)(int*)=ff;//错误:ff和pf3的返回类型不匹配**4、函数指针形参**和数组类似,虽然不能定义函数类型的形参,但是形参可以是指向函数类型的指针。

对于初学者,别说写出这样的函数声明,就是看到这样的写法也是一头雾水。

这时,`p`就是指向函数`max`的指针变量,也就是`p`和`max`都指向函数的开头。

当程序接收用户输入时,如果用户输入d,则求数组的最大值,如果输入x,则求数组的最小值,如果输入p,则求数组的平均值。