函数的类型
一般表示函数类型的形式为:类型(形式参数表)
在C++中,可以用typedef定义函数类型名。函数类型名定义的一般形式为:
typedef 类型 函数类型名(形式参数表)
例如: typedef double functionType(double, double),函数类型名functionType定义了一类接口相同的函数抽象,即抽象了两个double参数,返回double类型的一类函数。
函数指针
一般定义形式:
类型(*指针变量名)(形式参数表)
或 函数类型 * 指针变量名
例如对上述定义的functionType函数,定义指向这一类的函数指针变量,可以用说明语句:
double(*fp)(double,double)
或者 functionType * fp
注:这里第一个括号不能省略,若省略,double * fp(double,double),则会认为返回的是指针值,fp为函数名。
还可以用关键字typedef定义指针类型,例如:
typedef 类型 (*指针类型)(形式参数表)
或 typedef 函数类型 * 指针类型
例如:typedef double(*pType)(double,double)
typedef functionType * pType
又如, pType pf1,pf2;定义了两个 pType类型的指针变量,分别指向不同函数
pf1 = max;pf2 = min;
用函数指针调用函数
(*指针变量名)(实参)
或 指针变量名(实参)
例如:fp = max;
x = fp(0.5,3.9)等价于(*fp)(0.5,3.9)