码迷,mamicode.com
首页 > 其他好文 > 详细

函数指针&回调函数

时间:2020-05-04 17:50:27      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:调用函数   nextval   就是   get   print   font   ++   std   回调   

函数指针:  函数指针是指向函数的指针变量,并且函数指针可以像一般函数一样,用于调用函数、传递参数.

指针变量的声明: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\n",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("\n");
     return 0;
}

 

函数指针&回调函数

标签:调用函数   nextval   就是   get   print   font   ++   std   回调   

原文地址:https://www.cnblogs.com/sird-b/p/12827059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!