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

函数指针: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);