咱們都知道,數組名就是指向數組第一個元素的常量指針。同理,對於一個函數而言,函數名也是指向函數第一條指令的常量指針。而編譯器要作的就是在程序編譯以後,爲每一個函數分配一個首地址,即該函數第一條指令的地址。通常狀況下,咱們能夠用一個指針來保存這個地址,而這個指針就是函數指針,該指針能夠看做是它指向函數的別名,因此咱們能夠用該指針來調用這個函數。html
=========================函數指針的聲明方法=========================ios
type (*vp) (type,type);數組
該語句聲明瞭一個指針vp,它指向了一個函數,這個函數帶有了2個type型參數並返回一個type的值。(type能夠是任意的類)函數
eg,int (*vp) (int,int);post
簡單的例子:spa
#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); }