我们都知道,数组名就是指向数组第一个元素的常量指针。同理,对于一个函数而言,函数名也是指向函数第一条指令的常量指针。而编译器要做的就是在程序编译之后,为每个函数分配一个首地址,即该函数第一条指令的地址。一般情况下,我们可以用一个指针来保存这个地址,而这个指针就是函数指针,该指针可以看作是它指向函数的别名,所以我们可以用该指针来调用这个函数。
=========================函数指针的声明方法=========================
type (*vp) (type,type);
该语句声明了一个指针vp,它指向了一个函数,这个函数带有了2个type型参数并返回一个type的值。(type可以是任意的类)
eg,int (*vp) (int,int);
简单的例子:
#include<iostream> typedef int (*vp)(int,int);//为函数指针定一个别名,方便使用 int add(int x,int y){return x+y;} int min(int x,int y){return x-y;} void print(vp p,int x,int y){std::cout<<"result="<<p(x,y)<<std::endl;}//函数指针作为函数参数,在函数中调用相应的函数。 int main() { int x,y; vp p; //声明函数指针p std::cin>>x>>y; p = add; //指向add函数 print(p,x,y); p = min; //指向min函数 print(p,x,y); }