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 //含函数指针的函数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 }

原文地址:https://www.cnblogs.com/brock-1993/p/4243076.html