函数返回类型分为
- 返回基本数据类型
- (指针函数)返回指针类型,返回的新指针指向返回值得地址 //指针函数不能返回局部量(函数内变量)的指针
- 返回引用类型,直接返回返回值的地址 //引用函数不能返回局部量(函数内变量)的引用,不产生副本。返回引用比返回指针更直接,可读性更好
函数的类型是指函数的接口,包括函数的参数定义和返回类型
如 函数double max(double,double);的类型是
double(double,double);
定义方法
typedef 类型 函数类型名 (形式参数表)
如: typedef double functionType(double,double);
使用:
如: functionType max,min,average;
(相当于同时声明了三个函数 double max(double,double);double min(double,double); double average(double,double);)
函数指针是指向函数的指针变量
定义方法
- 类型(*指针变量名)(形参表)
- 函数类型 *指针变量名
如: double (*fp)(double,double);
functionType *fp;
当函数指针作为函数参数时,可以传递函数的地址,通过参数调用不同的函数。
例子:
1 #include<iostream> 2 using namespace std; 3 //定义functionType函数类型 4 typedef double functionType(double,double); 5 //声明三个函数min max average 6 functionType min,max,average; 7 //定义函数指针fp 8 functionType *fp; 9 //含函数指针的函数callFunction 10 double callFunction(functionType *,double,double); 11 int main() 12 { 13 double a=4.3,b=3.6; 14 cout<<"min = "<<min(a,b)<<" max = "<<max(a,b)<<" ave = "<<average(a,b)<<endl; 15 //函数指针获取函数地址 16 fp=min; cout<<"*fb min = "<<callFunction(fp,a,b); 17 fp=max; cout<<" *fb max = "<<callFunction(fp,a,b); 18 fp=average; cout<<" *fb ave = "<<callFunction(fp,a,b)<<endl; 19 cout<<"call min = "<<callFunction(min,a,b); 20 cout<<" call max = "<<callFunction(max,a,b); 21 cout<<" call ave = "<<callFunction(average,a,b)<<endl; 22 23 cin.get(); 24 return 0; 25 } 26 double min(double a,double b) 27 { 28 return a>b?b:a; 29 } 30 double max(double a,double b) 31 { 32 return a>b?a:b; 33 } 34 double average(double a,double b) 35 { 36 return (a+b)/2; 37 } 38 double callFunction(functionType *fp,double a ,double b) 39 { 40 return fp(a,b); 41 }