C++函数指针

简介: C++函数指针

C++函数指针

概述:

函数指针简介:

如果作为一个屌丝程序员,未提到函数指针,则对C或C++函数的不尊重;

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

函数指针的基础知识:

· 获取函数的地址:

1.只要使用函数名(后面不跟参数即可)。也就是说 test()是一个函数,则 test 就是该函数地址。

2.要将函数作为参数进行传递,必须传递函数名,一定要区分传递的是函数的地址还是函数的返回值。

3.Call(test());//返回值

4.Call(test); //在Call内部可以调用test()函数

· 声明一个函数指针:

1.typedef int (FuncPtr::*pfunc)(int,int);

2.int add(int a,int b);

· 使用函数指针来调用函数

1.pfunc m_Func;

2.m_Func = &FuncPtr::add;

代码示例

.h:

image.png

#include "FuncPtr.h"
#include <QDebug>
FuncPtr::FuncPtr(QWidget *parent)
    : QWidget(parent)
{
    initMap();
    pfunc m_Func;
    m_Func = &FuncPtr::add;
    (this->*m_Func)(5,5);//大家注意调用时的方法
    m_Func = &FuncPtr::sub;
    (this->*m_Func)(5,5);
 
    //map调用方法
    (this->*m_Map[1])(10,10);
    (this->*m_Map[2])(20,20);
}
 
FuncPtr::~FuncPtr()
{
 
}
 
void FuncPtr::initMap()
{
  //将函数插入到MAP中
    m_Map[1] = &FuncPtr::add;
    m_Map[2] = &FuncPtr::sub;
}
 
int FuncPtr::add(int a, int b)
{
    qDebug()<< "add";
    return a+b;
}
 
int FuncPtr::sub(int a, int b)
{
    qDebug()<< "sub";
    return a-b;
}

总结:

函数是C++编程中的一个模块。要使用函数,必须定义和原型,并调用该函数;

函数定义是实现函数功能的代码;

函数原型描述了函数的接口;

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!

如果大家有更好的方法或有问题可以在文末评论一起讨论!

共同学习!

共同进步!

相关文章
|
6月前
|
C++
c++中函数指针
c++中函数指针
30 1
|
1月前
|
存储 C++ 索引
C++函数指针详解
【10月更文挑战第3天】本文介绍了C++中的函数指针概念、定义与应用。函数指针是一种指向函数的特殊指针,其类型取决于函数的返回值与参数类型。定义函数指针需指定返回类型和参数列表,如 `int (*funcPtr)(int, int);`。通过赋值函数名给指针,即可调用该函数,支持两种调用格式:`(*funcPtr)(参数)` 和 `funcPtr(参数)`。函数指针还可作为参数传递给其他函数,增强程序灵活性。此外,也可创建函数指针数组,存储多个函数指针。
|
6月前
函数指针
函数指针。
29 1
|
6月前
|
C语言
指针函数和函数指针
指针函数和函数指针
48 0
|
C++
C++函数指针
C++函数指针
61 1
函数指针:
函数指针:本质是指针变量 保存的是函数的入口地址
函数指针:
|
编解码 Cloud Native 网络协议
【C/C++】函数指针与指针函数
函数指针是指向函数的指针变量。 因此函数指针本质上是一个指针变量,只不过该指针变量指向函数。指针变量也可以指向整型变量、字符型、数组,也可以指向函数。
140 0
|
编译器
函数指针做函数参数 使用总结及其意义
函数指针做函数参数 使用总结及其意义
151 0
函数指针做函数参数 使用总结及其意义
|
C++ 索引
C/C++ 函数指针
函数指针 函数是存放在内存的代码区域内 栗子 int test(int a){ return a; } int main(int argc, const char * argv[]){ // 这里定义了一个参数为int类型的函数,函数的返回值为int类型的指针fp int (*fp)(int a); // 将test函数的地址赋值给指针fp,完成一个指向函数。
807 0