回调函数:函数参数中函数指针的函数,在调用者调用这个函数时候,这个函数会回头调用调用者编写的函数。
函数指针: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);
原文地址:http://11631662.blog.51cto.com/11621662/1794447