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

 

转载于:https://www.cnblogs.com/agui521/p/7088525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值