函數指針是指向函數的指針變量,其指針指向函數內存的入口地址。
函數指針有兩個用途:調用函數和做函數的參數。
函數指針的聲明方法爲:返回值類型 ( * 指針變量名) ([形參列表]);
例如:int fun(int x); //聲明一個函數
int (*pf) (int x); // 聲明一個函數指向指針 int爲聲明該函數指針爲返回值時整形的函數指針
//pf是函數指針的指針名(注意括號) (int x) 爲爲形參列表
pf=fun //將函數入口地址賦值給函數指針
函數指針做參數傳遞:int fun_pointer( int(*pf) (int a, int b), int a ,int b )
調用方式:fun_pointer(pf,i, j)
/*
** 開發環境:vs2017
** 作 者:mirco_mcu
*/
#include "stdafx.h"
int (*pf) (int a, int b);//定義函數指針
int add(int a, int b) //定義函數
{
return a + b;
}
int fun_pointer( int(*pf) (int a, int b), int a ,int b ) //函數指針做參數,同時傳入函數指針所調用的參數
{
return pf(a, b);
}
int main()
{
int i=1, j=2; //定義變量
pf = add; //將函數 add 入口地址賦值給函數指針
printf("常規計算 : %d\n", i + j); //常規調用
printf("函數指針 : %d\n", pf(i, j)); //函數指針方式調用
printf("函數指針做參數 : %d\n", fun_pointer(pf,i, j)); //函數指針方式調用
while (true);
return 0;
}