·C/C++程序内函数与数据具有等价的地位(函数型指针为典型代表);
函数型指针的声明格式:
返回的指针数据类型(*函数指针名)(参数类型,…);
例7:函数型指针的应用示例
double max(int,int);
double rs;
double (*pf)(int,int);
…
pf=&max;/*函数地址附值*/
…
rs=(*pf)(3.14,1.22);
rs=pf(9.0,2.4);/* 函数指针引用的简化形式*/
·在C程序内函数型指针多以函数的参数出现在虚函数中;
虚函数的声明格式:
返回类型 函数名(参数类型,…,指针类型(*)(参数类型,…));
虚函数的定义格式:
返回类型 函数名(参数名1,…,指针类型(*虚函数名)(参数类型,…)){…代码体}
例8:求圆周长和面积C程序代码
#include<stdio.h>
const float pai=3.14159;
float circle_len(float radio){return radio*pai*2;}
float circle_area(float radio){return pai* radio *radio;}
float circle_js(float radio, float (*f)(float)){return f(radio);}
void main()
{
float r1=1.,r2=2.;
printf("Radio=%f length=%f\n",r1,circle_js(r1,circle_len));
printf("Radio=%f area=%f\n",r2,circle_js(r2,circle_area));
getchar();
}