C++中的回调函数,函数指针理解

本文介绍了C和C++中函数指针的基本概念及其使用方法,并通过示例展示了如何利用函数指针实现回调函数的功能。此外,还对比了C和C++中struct的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小知识:C和C++中struct 的区别就是C中的struct不能有成员函数,C++中可以有。
C++中可以通过类实例化对象来调用成员函数,在C语言中,就可以用函数指针来调用回调函数。
函数指针:函数指针就是指向一个函数,存储的是那个函数的地址
回调函数:就是通过函数指针来调用函数指针指向的函数。

#include <iostream>
#include <stdlib.h>
using namespace std;

int max(int x, int y)
{
    return x > y ? x:y;
}

void main()
{
    int j;
    int(*p)(int, int);//说明:指向函数的指针变量的一般形式:数据类型 (*指针变量名)(函数参数列表)

    int a = 10, b = 100, c;
    p = &max;//p= max的作用是把max函数的入口地址赋值给变量 p. 函数名代表首地址。这时候就是指向函数的指针变量。
    //p=max也可以

    c = (*p)(a, b);//函数指针调用函数

    cout << c << endl;
    system("pause");

}

就是这样,下面一个代码例子能更加说明回调函数的用法。

#include <iostream>
using namespace std;
int main()
{
    void caller(void(*) ()); //函数声明,注意这里的格式
    void func(); //函数声明
    void(*p) (); //定义指针变量,注意格式,后面一个括号是被调函数的参数类型
    p = func; //指针变量赋值
    caller(p); //回调,通过指针p指向函数func的首地址,去访问内存中为函数分配的内存空间。
}

//回调函数
void caller(void(*fnp) ())
{
    printf("调用成功\n");
    fnp();
}

//被调函数
void func()
{
    printf("回调成功\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值