• c++函数指针


    说一说c++函数指针

    c++函数指针是c++函数的重要部分。与数据项相似,函数也有地址。函数的地址是存储其机器代码的内存的起始地址。可以编写将另一个函数的地址作为参数的函数。这样第一个函数能够找到第二个函数。

    函数指针的基本知识:

    1.获取函数的地址:

    获取函数的地址很简单,函数名就是函数的地址。

    2.声明函数指针

    声明指向某种数据类型的指针时,必须指定指针指向的类型。类似,声明指向函数的指针时,必须指定指针指向的函数类型。这意味着应指定函数的返回类型以及函数的特征标(参数列表),也就是说应该像函数原型那样指出有关函数的信息。

    例如函数原型   double fun(int a,int b),正确的指针类型 double (*pfun)(int ,int ),这与前者相似,就是将(*pfun)替换为fun,*pfun为函数,所以pfun是函数指针。

    3.使用指针调用函数

    double fun(int);

    double (*pfun)(int);

    pf=pam;

    double x=fun(4);

    double y=(*pfun)(5);

    历史与逻辑:

    为什么fun与*pfun等价呢?一种学派认为,由于fun是指针,而*pfun是函数,因此应将(*pfun)()用作函数调用;另一种学派则认为,由于函数名是指向函数的指针,指向函数的指针的行为应与函数名相似,因此应将pfun用作函数调用使用。c++进行了折衷,都是允许的。

    深入研究函数指针:

    函数指针的表示有可能特别恐怖,下面是一些相同函数的原型,他们的参数和返回类型完全相同

    const int *f1(const int ar[],int n)

    const int *f2(const int [],int );

    const int *f3(const int *,int );

    接下来声明一个指向这三个函数的指针,假定名字为pf,则只需要将目标函数原型中的函数名替换为(*pf)即const int *(*pf)(const int*,int);

    同时,可进行初始化 const int *(pf)(const int *,int )=f1;

    函数指针数组:

    const int*(*pf[3])(const int *,int )={f1,f2,f3);声明并初始化了函数指针数组;

    每一篇博客,不为别的,证明我的成长。每一次发文,不为别的,证明我严阵以待。蜗牛爬得很慢,却终有一日登上参天大树。因为它热爱。
  • 相关阅读:
    tomcat配置和原理(转)
    maven install、maven clean、project clean
    spring注解的(List&Map)特殊注入功能
    React父子组件传值
    使用Ant Design的Upload上传删除预览照片,以及上传图片状态一直处于uploading的解决方法。
    使用react-redux
    URLSearchParams生成和解析URL或者参数字符串
    Ant Design的Table组件去除“取消排序”选项
    React Hooks的useState和useEffect
    webpack配置alias简化相对路径
  • 原文地址:https://www.cnblogs.com/agui521/p/7088525.html
Copyright © 2020-2023  润新知