1. 程式人生 > >函數指針的應用

函數指針的應用

初始化 typedef col bsp names () return pan 函數指針

#include <iostream>
#include <string>
using namespace std;

void print()
{
    cout << "hello world" << endl;
}

int max(int num1,int num2)
{
    return num1>num2?num1:num2;
}

//(二)使用typedef更直觀更方便。
//形式2:typedef 返回類型(*新類型)(參數表)
typedef int (*PFUN_t) (int,int);    //定義了一種新的類型,並定義這種類型為指向函數的指針

//函數指針作為參數,並在函數內執行函數 void excu_pfun(PFUN_t t_pfun,int num1,int num2) { cout << (*t_pfun) (num1,num2) << endl; //out:max } int main() { //(一)簡單的函數指針的應用。 //形式1:返回類型(*函數名)(參數表) //例如: int (*pfun) (in,int); void (*pfun) () = NULL; //定義了一個void函數指針,初始指向NULL pfun = print; //print函數名就是該函數的地址,將該函數地址賦給pfun函數指針
(*pfun) (); //也是用*取出函數指針指向的內容,執行函數print() int (*pfun1) (int,int); //定義一個int函數指針,不初始化 pfun1 = max; //第一種賦值方式,使用函數名賦值:函數指針pfun1指向max函數 //pfun1 = &max; //第二種賦值方式,使用函數的地址賦值,本質2種方法一樣 cout << (*pfun1) (2,3) << endl; //out: 3 PFUN_t pfun2; //使用新的函數指針類型,定義函數指針pfun2 pfun2 = max; //
賦值:函數指針pfun2指向max函數 cout << (*pfun2) (4,5) << endl; //out: 5 //max函數指針作為參數,並在函數內執行max函數 excu_pfun(max,6,7); //out:7 }

函數指針的應用