文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>callback function回调函数

callback function回调函数

时间:2010-03-14  来源:liw1029

定义:
将一个函数指针作为参数传递给其他函数,后者将“回调”函数指针指向的函数。
int (*func_p)(void *arg1, void *arg2);//定义一个函数指针;

例如:
在单链表中查找一个值
Node *search_list(Node *node, int const value)
{
    while(node != NULL)
    {
        if (node->value == value)
        {
            break;
        }
        else
        {
            node = node->next;
        }
    }

    return node;
}
这个函数的缺点是只能用在查找值为整数的链表中,如果你要在一个字符串链表中查找,就不能用这个函数了,只能重新写一个。怎么才能使查找函数与类型无关呢?使用函数指针。
Node *search_list(node *node, void *value, int (*compare)(void *, void *))
{
    while (node != NULL)
    {
        if (0 == compare(&(node->value), value))
        {
           break;
        }
        else
        {
            node = node->next
        }
    }

    return node;
}

如果是一个整形的链表,你可以这样写比较函数
int compare_int(void *a, void *b)
{
    if (*(int *)a == *(int *)b)\
    {
        return 0;
    }
    else
    {
        return 1;
    }
}

这样使用它:
result_node = search_list(node, *value, compare_int);

说明:关于函数和函数指针
int func(int);
int (*func_p)(int) = &func; int (*func_p)(int) = func;//效果是一样的,因为函数在被使用的时候总是由编译器把它转换为函数指针。

可以有三种方式使用:
int ret;
ret = func();
ret = func_p();
ret = (*func_p)();

详细内容请参考《c和指针》一书


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载