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

                          回调函数

时间:2016-06-30 14:51:18      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:include   return   

回调函数:函数参数中函数指针的函数,在调用者调用这个函数时候,这个函数会回头调用调用者编写的函数。

函数指针:int (*f)(int);//声明了一个函数指针,它指向一个返回值为int 参数为int 的函数

int p(int);

f=p;//函数指针的赋值

add = f(25);//等价于调用p(25);

为什么要编写回调函数,因为只能只能有调用者定义的工作或者执行不同类型的工作

编写一个在单链表中查找一个值的函数:

参数:指向第一个节点的指针,要找的数据

Node * search_List(Node * node,int const value)

{

    while(node != NULL){

        if(node->value == value)

            break;

        node=node->next;   

    }

    return node;

}

这个查找函数只适用与值为整数的链表

#include<stdio.h>

#include"node.h"

Node* search_list(Node *node,void *value,int(*compare)(void

const *,void const *

))

{

    while(node != NULL)

    {

        if(compare(&node->value,value == 0))

            break;

        node = node->link;

    }

    return node;

}

将指向值参数的指针和&node->value传递给比较函数,后者是我们当前所检查的节点节点的值。

int compare_ints(void const *a,void const *b)

{

    if(*int( *)a == *int(*)b)

        return 0;

    else

        return 1;

}

调用:desire_node = search_list(root,&desire_value,compare_ints);

                          回调函数

标签:include   return   

原文地址:http://11631662.blog.51cto.com/11621662/1794447

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