您的位置:首页 > 编程语言 > C语言/C++

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

2016-11-12 22:00 239 查看
小知识: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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++