首页 > 代码库 > C++指针函数和函数指针

C++指针函数和函数指针

函数返回类型分为

  1. 返回基本数据类型
  2. (指针函数)返回指针类型,返回的新指针指向返回值得地址   //指针函数不能返回局部量(函数内变量)的指针
  3. 返回引用类型,直接返回返回值的地址   //引用函数不能返回局部量(函数内变量)的引用,不产生副本。返回引用比返回指针更直接,可读性更好

函数的类型是指函数的接口,包括函数的参数定义和返回类型

 如 函数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);)

函数指针是指向函数的指针变量

定义方法

  1. 类型(*指针变量名)(形参表)
  2. 函数类型 *指针变量名

如:  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 //含函数指针的函数callFunction10 double callFunction(functionType *,double,double);11 int main()12 {13     double a=4.3,b=3.6;14     cout<<"min = "<<min(a,b)<<"\tmax = "<<max(a,b)<<"\tave = "<<average(a,b)<<endl;15     //函数指针获取函数地址16     fp=min;        cout<<"*fb min = "<<callFunction(fp,a,b);17     fp=max;     cout<<"\t*fb max = "<<callFunction(fp,a,b);18     fp=average; cout<<"\t*fb ave = "<<callFunction(fp,a,b)<<endl;19     cout<<"call min = "<<callFunction(min,a,b);20     cout<<"\tcall max = "<<callFunction(max,a,b);21     cout<<"\tcall 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 }

技术分享

 

C++指针函数和函数指针