函数指针的定义形式
形式1:返回类型(*函数指针名称)(参数列表)
如下为使用函数指针的程序代码:
#include <iostream>
using namespace std;
/// 定义一个名为pFun的函数指针,它指向一个返回类型为char,有一个int型的参数的函数
/// 也可以把pFun说成是一个“char () (int)”函数类型的指针,“char () (int)”为一种
/// “返回类型为char,有一个int形的参数”的函数类型
///
char (*pFun)(int);
/// 定义一个返回类型为char,有一个int型参数的函数。从指针层面上理解该函数,即函数的
/// 函数名实际上是一个指针,该指针指向函数在内存中的首地址
///
char glFun(int a)
{
if(a==110) return 'a';
return 'b';
}
int main()
{
/// 将函数glFun在内存中的首地址赋给函数指针变量pFun
///
pFun = glFun;
/// “*pFun”表示取函数指针pFun所指向地址的内容,也即取出函数glFun()的内容,然后给定参数为2。
(*pFun)(2);
return 0;
}
形式2:typedef 返回类型 (*新类型)(参数表)
如下为typedef
的使用方法
int i; ///> 定义一个整型变量i
typedef int myInt;
myInt j; ///> 定义一个整型变量j
使用typedef
是为了让函数指针的使用变得更加直观与方便,如下为使用typedef
形式函数指针的程序代码:
/// typedef的功能是利用已有的类型定义新的类型。
/// 定义一种名为PTRFUN的函数指针类型,这种函数以一个int为参数并返回char类型。
/// 后面就可以像使用int,char一样使用PTRFUN了。
///
typedef char (*PTRFUN)(int);
/// 使用类型PTRFUN定义变量pFun,这时,pFun是一个“char () (int)”函数类型的指针
///
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
}