函数指针&回调函数

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;
}

 

以上是关于函数指针&回调函数的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C Block与函数指针比较

函数指针与回调函数

RTT设置删除空闲钩子函数想到函数指针和回调函数

C语言函数指针之回调函数

C语言指针(指针数组数组指针函数指针传参回调函数等)超详细

Java/Android中的函数调用&回调函数&自定义回调函数