• 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);声明并初始化了函数指针数组;

    每一篇博客,不为别的,证明我的成长。每一次发文,不为别的,证明我严阵以待。蜗牛爬得很慢,却终有一日登上参天大树。因为它热爱。
  • 相关阅读:
    字符串----不可重叠的最长重复子串
    字符串----最长重复子串
    字符串----HDU-1358
    字符串----hiho字符串(尺取法)
    字符串匹配(二)----KMP算法
    字符串匹配(一)----Rabin-Karp算法
    字符串----最短摘要生成(尺取法)
    【Hibernate 检索策略】
    【Hibernate 多表查询】
    【Hibernate QBC】
  • 原文地址:https://www.cnblogs.com/agui521/p/7088525.html
Copyright © 2020-2023  润新知