• 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 }

  • 相关阅读:
    LinkedListQueue
    LinkedListStack
    redis学习之——Redis事务(transactions)
    redis学习之——持久化RDB 和AOF
    redis学习之——redis.conf配置(基本)文件学习
    评估算法的核心指标
    Vector类
    List接口与ArrayList、LinkedList实现类
    Collection接口
    枚举类
  • 原文地址:https://www.cnblogs.com/brock-1993/p/4243076.html
Copyright © 2020-2023  润新知