首页 > 编程语言 >c++函数指针

c++函数指针

时间:2023-02-15 11:05:28浏览次数:56  
标签:函数 int double c++ 地址 pf 函数指针 estimate

函数的地址是存储其机器语言代码的内存的开始地址。通常,这些地址对用户而言,既不重要,也没有什么用处,但对程序而言,却很有用。例如,可以编写将另一个函数的地址作为参数的函数。这样第一个函数将能够找到第二个函数,并运行它。与直接调用另一个函数相比,这种方法很笨拙,但它允许在不同的时间传递不同函数的地址,这意味着可以在不同的时间使用不同的函数。

#include <iostream>
#include <cstring>
using namespace std;
double betsy(int);
double pam(int);
void estimate(int lines,double (*pf)(int));
int main(){
int code = 30;
estimate(code,betsy);
estimate(code,pam);
return 0;
}

double betsy(int lns){
return 0.1*lns;
}

double pam(int lns){
return 0.2*lns;
}

void estimate(int lines,double (*pf)(int)){
cout << lines << endl;
cout << (*pf)(lines) << endl;
}

总结来说想在一个方法中调用不同的函数需要以下步骤:

1、获取函数的地址;

获取函数的地址很简单,只要使用函数名(后面不跟参数)即可。也就是上面的

estimate(code,betsy);

2、声明一个函数指针;

声明指向函数的指针时,也必须指定指针指向的函数类型,需要指定返回值和参数,函数名由(*pf)代替

void estimate(int lines,double (*pf)(int));

3、使用函数指针来调用函数。

在函数体,使用指针来调用被指向的函数。只需要把(*pf)当做函数名。

(*pf)(lines)

标签:函数,int,double,c++,地址,pf,函数指针,estimate
From: https://blog.51cto.com/u_3764469/6058745

相关文章

  • 解决在Windows上Android Studio写C/C++代码无法补全,没有代码提示的问题
    之前一直在Linux上开发应用,最近因为工作需要,系统切回了Windows,因为之前在Linux上的AndroidStudio中写C/C++代码很正常,该有的代码提示功能都有。但是在迁移到Windows上后......
  • C++ uppper_bound 使用
     map的key,默认按照从小到达排序;upper_bound(4),  #include<iostream>#include<vector>#include<map>#include<algorithm>usingnamespacestd;intmai......
  • 实现C++和C的混合编程
    实现C++和C的混合编程在C++出现之前,很多实用的功能都是用C语言开发的,很多底层的库也是用C语言编写的。这意味着,如果能在C++代码中兼容C语言代码,无疑能极大地提......
  • C/C++程序设计课程设计[2023-02-15]
    C/C++程序设计课程设计[2023-02-15]程序设计课程设计要求1、课程设计分组合作完成,每个小组最多3人。2、每组成员(不得超过3人)分工合作完成一个课程设计题目,每个人的任......
  • C++类的组合
    title:C++类的组合案例date:2022-05-1819:07:35tags:C++category:cpp参考书籍:C++PrimerEssentialC++编译器:gcc/g++C++类的组合什么是类的组合类的组合就是以......
  • 高效字符串匹配算法——BM 算法详解(C++)
    定义BM算法是由Boyer和Moore两人提出的一种高效的字符串匹配算法,被认为是一种亚线性算法(即平均的时间复杂度低于线性级别),其时间效率在一般情况下甚至比KMP还要快3......
  • c++通过http协议校时
    由于IP黑白名单的限制,我们能访问的ip和域名资源非常有限,现将通过http协议授时方法整理如下: #include<cstdio>#include<string.h>#include<curl/curl.h>#inclu......
  • 【opencv c++】实现yolov5部署onnx模型完成目标检测
    总代码#include<fstream>#include<sstream>#include<iostream>#include<opencv2/dnn.hpp>#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>usin......
  • c++函数与结构
    当结构比较小时,按值传递结构最合理。传递2个值结构体,返回一个结构体,返回的结构体中的成员是参数各成员的和。#include<cstring>usingnamespacestd;structthings{i......
  • C/C++读入含有空格的字符串
    好久之前遇到gets()不准用的情况,所以稍稍参考了一下网上的方法,整理一下。 charst[maxn];strings;1、gets(st);2、scanf("%[^\n]",st);3、getline(cin,s);......