函数指针&回调函数
Posted sird-b
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针&回调函数相关的知识,希望对你有一定的参考价值。
函数指针: 函数指针是指向函数的指针变量,并且函数指针可以像一般函数一样,用于调用函数、传递参数.
指针变量的声明:typedef (* 定义的名字) (参数,参数) ,such as: int (*fun_ptr)(int,int);
源码:
#include<stdio.h> int max(int x, int y) { return x>y? x : y; } int main() { int (*p)(int,int)=&max; //max是一个函数)首先定义一个函数指针p,并把函数max地址赋值给p 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);//调用max函数 printf("最大的数字是:%d ",d); return 0; }
回调函数://函数指针作为某个函数的参数 ,回调函数就是一个通过函数指针调用的函数。
源码:
void populate_array(int *array,size_t arraySize, int(*getNextValue) (void) ) //第三个形参定义指针getNextValue, { for(size_t i=0; i<arraySize; i++) array[i] = getNextValue();//运用指针getNextValue } //回调函数 回调函数只有被当成参数传递给被调函数时才能称作回调函数 //回调函数 getNextRandomValue,它返回一个随机值,它作为一个函数指针传递给 populate_array 函数。 int getNextRandomValue(void) { return rand();//rand()函数随机获取数字 } int main(void) { int myarray[10]; populate_array(myarray, 10, getNextRandomValue);//myarray首字母地址,10作为限定循环,getnextrandomvalue回调函数 for(int i=0;i<10;i++) { printf("%d", myarray[i]); } printf(" "); return 0; }
以上是关于函数指针&回调函数的主要内容,如果未能解决你的问题,请参考以下文章