C++ 函數指針

      咱們都知道,數組名就是指向數組第一個元素的常量指針。同理,對於一個函數而言,函數名也是指向函數第一條指令的常量指針。而編譯器要作的就是在程序編譯以後,爲每一個函數分配一個首地址,即該函數第一條指令的地址。通常狀況下,咱們能夠用一個指針來保存這個地址,而這個指針就是函數指針,該指針能夠看做是它指向函數的別名,因此咱們能夠用該指針來調用這個函數。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);
}
相關文章
相關標籤/搜索