C++中的回调函数,函数指针理解
2016-11-12 22:00
239 查看
小知识:C和C++中struct 的区别就是C中的struct不能有成员函数,C++中可以有。
C++中可以通过类实例化对象来调用成员函数,在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/C++声明 const, typedef , 函数指针
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 对于C++函数指针的理解
- C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
- C语言之最好理解的通过函数指针作为参数实现回调函数
- 深入理解 C++ 指针(七)---指针和函数的关系
- C++调用空指针对象的成员函数成功的理解
- 【转载】C++成员函数指针的应用,可作为回调函数实参
- C/C++之回调函数---函数指针的作用
- C/C++杂记:深入理解数据成员指针、函数成员指针
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 对C++中指针做函数形参的理解
- c 函数指针的定义 和 C++回调函数的使用
- 理解复杂的C/C++声明 const, typedef , 函数指针
- c 函数指针的定义 和 C++回调函数的使用
- C/C++之回调函数---函数指针的作用
- C++ 回调函数与函数指针
- C++中回调函数及函数指针的实例详解
- C/C++之回调函数---函数指针的作用
- 【转载】C/C++杂记:深入理解数据成员指针、函数成员指针