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)

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

  • 相关阅读:
    mysql常用函数
    快看看你躺枪了吗?最全搞笑中式英语大集合
    浏览器 返回状态码汇总
    Eclipse 快捷键 篇
    Spring定时任务的几种实现
    mysql ---复制表结构---创建新表
    日志级别的选择:Debug、Info、Warn、Error还是Fatal
    关闭网页时如何弹出消息框 提醒用户:您确认关闭吗 ?
    处理session丢失的问题
    工作中存在的问题
  • 原文地址:https://www.cnblogs.com/calence/p/7457466.html
Copyright © 2011-2022 走看看