函数指针是指向函数的指针变量,函数指针可以像函数一样用于调用函数,传递参数。
声明方式: typedef int (*fun_ptr)(int,int);
这里是声明一个指向同样参数,返回值的函数指针类型
指针使用也很简单,可以理解为方法的第二个名称,写一个方法进行简单测试。
int max(int x, int y)
{
return x > y ? x : y;
}
int (* pe)(int, int) = & max; // &可省略
int te,tea = 2 ,teb = 5, tec = 3 ;
//te = max(max(tea, teb), tec);
te = pe(pe(tea, teb), tec);
printf("最大的数字:%d", te);
回调函数 ,函数指针作为某个函数的参数。回调函数就是通过函数指针调用的函数
通过一个菜鸟教程提供的实验方法实践一下:
//声明在Main前
void populate_array(int* array, size_t arraySize, int (*getNextValue)(void))
{
for (size_t i = 0; i < arraySize; i++)
{
array[i] = getNextRandomValue();
}
}
//生成随机数的函数
int getNextRandomValue(void)
{
return rand();
}
//测试函数
int myarray[10];
// getNextRandomValue 不能加括号,否则无法编译,因为加上括号之后相当于传入此参数传入了int ,而不是函数指针
populate_array(myarray, 10, getNextRandomValue);
for (int i = 0; i < 10; i++) {
printf("%d ", myarray[i]);
}
printf("\n");
在菜鸟教程中回调函数的基本内容就是这些,下一个部分学习字符串。