zoukankan      html  css  js  c++  java
  • C++学习基础十七-- 函数指针

    C++常用的函数指针

    语法:返回值类型 (*函数名)(参数列表);


    举例说明:int (*Func)(int m, int n);

    • 用typedef简化函数指针的定义

            例如:

    1 typedef int (*Func)(int m, int n);
    • 函数指针的初始化和赋值
     1 // 1. 先声明对应函数指针类型的函数  
     2 int max(int num1, int num2)
     3 {
     4    return num1 > num2 ? num1 : num2;
     5 }
     6 
     7 //2. 初始化
     8 Func fc = 0;//表示函数指针不指向任何函数
     9 Func fp = max;//表示函数指针指向max函数
    10 
    11 //3. 调用
    12 max(10,20);//直接调用
    13 fp(10,20);//使用函数指针调用
    • 指针函数可以作为形参

             有两种方式:

    1 //1.
    2 void useBigger(const string &str1, const string &str2,
    3                 bool (const string &s1, const string &s2));
    4 //或者
    5 void useBigger(const string &str1, const string &str2,
    6                 bool (*)(const string &s1, const string &s2));
    • 返回指向函数的指针

            例如:

    1 int (*ff(int)) (int *p1, int n);

    这句话的意思是:ff(int)是一个函数,带有一个int型形参,返回值类型为int (*) (int *p1, int n),也就是返回一个函数指针。使用typedef可使该定义更简明易懂:

    1  typedef int (*PP)(int *p1, int n); 
    2  PP ff(int);
    • C++允许函数指针指向重载的函数

            例如:

    1 extern void ff(vector<double> vds);
    2 extern void ff(unsigned int n);
    3 
    4 typedef void (*PF1)(unsigned int n);
    5 
    6 PF1 p = ff;//ff(unsigned int)

    指针的类型必须与重载函数的其中一个版本精确匹配,否则导致编译出错。

  • 相关阅读:
    手机怎么知道5G基站的存在?(小区搜索和SSB简介)
    Python中*args,**kwargs两个参数的作用?
    python之jupyter的安装
    国内安装python库速度慢的解决办法
    MOSFET:金属-氧化物半导体场效应晶体管
    C# 小知识点汇总
    ajax和form和七个中间件
    BBS功能分析
    MVC和MTV
    自关联和auth模块
  • 原文地址:https://www.cnblogs.com/calence/p/7457466.html
Copyright © 2011-2022 走看看