福州网站建设好的公司,合肥企业网站制作,手机网站的制作,免费的外贸网站推广方法C函数指针与回调函数
一、函数指针
函数指针是指向函数的指针变量。
通常我们说的指针变量是指向一个整型、字符型或数组等变量#xff0c;而函数指针是指向函数。
函数指针可以像一般函数一样#xff0c;用于调用函数、传递参数。
函数指针变量的声明#xff1a; type…C函数指针与回调函数
一、函数指针
函数指针是指向函数的指针变量。
通常我们说的指针变量是指向一个整型、字符型或数组等变量而函数指针是指向函数。
函数指针可以像一般函数一样用于调用函数、传递参数。
函数指针变量的声明 typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型 以下实例声明了函数指针变量 p指向函数 max
#include stdio.hint 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 二、回调函数
函数指针作为某个函数的参数 函数指针变量可以作为某个函数的参数来使用的回调函数就是一个通过函数指针调用的函数。
简单讲回调函数是由别人的函数执行时调用你实现的函数 实例中 populate_array() 函数定义了三个参数其中第三个参数是函数的指针通过该函数来设置数组的值。
实例中我们定义了回调函数 getNextRandomValue()它返回一个随机值它作为一个函数指针传递给 populate_array() 函数。
populate_array() 将调用 10 次回调函数并将回调函数的返回值赋值给数组
#include stdlib.h
#include stdio.hvoid populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{for (size_t i0; iarraySize; i)array[i] getNextValue();
}// 获取随机值
int getNextRandomValue(void)
{return rand();
}int main(void)
{int myarray[10];/* getNextRandomValue 不能加括号否则无法编译因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针*/populate_array(myarray, 10, getNextRandomValue);for(int i 0; i 10; i) {printf(%d , myarray[i]);}printf(\n);return 0;
}41 18467 6334 26500 19169 15724 11478 29358 26962 24464 菜鸟教程学习记录