函数指针和回调函数
2017-12-05 00:00
260 查看
函数指针
函数指针是指向函数的指针变量。通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。
函数指针可以像一般函数一样,用于调用函数、传递参数。
函数指针变量的声明:
例:
#include <stdio.h> int max(int x, int y) { return x > y ? x : y; } int main(void) { /* p 是函数指针 */ int (* p)(int, int) = & max; // &可以省略 int a, b, c, d; printf("请输入三个数字:"); scanf("%d %d %d", & a, & b, & c); /* 与直接调用函数等价,d = max(max(a, b), c) */ d = p(p(a, b), c); printf("最大的数字是: %d\n", d); return 0; }
编译执行,输出结果如下:
请输入三个数字:1 2 3 最大的数字是: 3
回调函数
函数指针作为某个函数的参数
函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。简单讲:回调函数是由别人的函数执行时调用你实现的函数。
例:
#include <stdlib.h> #include <stdio.h> // 回调函数 void populate_array(int *array, size_t arraySize, int (*getNextValue)(void)) { for (size_t i=0; i<arraySize; i++) array[i] = getNextValue(); } // 获取随机值 int getNextRandomValue(void) { return rand(); } int main(void) { int myarray[10]; populate_array(myarray, 10, getNextRandomValue); for(int i = 0; i < 10; i++) { printf("%d ", myarray[i]); } printf("\n"); return 0; }
编译执行,输出结果如下:
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709
相关文章推荐
- c 函数指针的定义 和 C++回调函数的使用
- [学习记录]Objective-C回调函数(函数指针)
- 回调函数,函数指针
- 函数指针-回调函数
- 回调函数和函数指针
- C语言里函数指针的两种常见用途(回调函数与转移表)
- 数组转置(函数指针,回调函数)
- 将字符串中各单词首字母转化成大写,使用回调函数实现[函数指针]
- delphi 中的函数指针 回调函数
- 简单LinuxC程序关于简单计算器(函数指针与回调函数)
- 【C语言】二级指针,函数指针,回调函数
- 成员函数指针与回调函数
- 回调函数,函数指针与函数对象
- C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子
- c/c++比较灵活的方法:回调函数和函数指针
- 回调函数和函数指针
- 函数指针和回调函数
- 回调函数和函数指针
- 回调函数、函数指针和函数对象
- [C语言]函数和指针居然也有一腿??让我们一起来了解回调函数