设为首页 加入收藏

TOP

回调函数到底是怎么一回事呢?(三)
2018-10-21 18:08:29 】 浏览:193
Tags:函数 到底 怎么 回事
hi
= histk[stkptr]; goto recurse; /* pop subarray from stack */ } else return; /* all subarrays done */ }

  为了更好地理解回调函数,接下来我们来写一个自己的qsort函数(利用冒泡排序)

 

int char_compare(void const * c1,void const* c2) //比较函数
{
    int a = *((int*)c1);
    int b = *((int*)c2);
    return a>b ? 1 : a<b ? -1 : 0;
}

void Swap(char *str1,char *str2,int size) 
{
    while (size--)
    {
        char tmp = *str1;
        *str1 = *str2;
        *str2 = tmp;
        str1++;str2++;
    }
}
void MyQsort(void *str,int len,int elen,int(*compare)(void const*,void const*))  //基于回调函数写的排序算法
{
    int i = 0;
    int j = 0;
    int flag = 1;
    for (i=0; i<len-1; i++)
    {
        for (j=0; j<len-1-i; j++)
        {
            if (compare((char*)str+j*elen,(char*)str+(j+1)*elen)>0)
            {
                flag = 0;
                Swap((char*)str+j*elen,(char*)str+(j+1)*elen,elen);
            }
        }
        if (flag)
            return;
    }
}

 

看了例题在来说说原理

  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我 们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

回调函数实现的机制是:

  (1)定义一个回调函数;

  (2)提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

  (3)当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

 

看了两个例子大家应该能理解回调函数了,如果还有什么问题可以私信我,建议把指针这节理解透彻,这是指针的

参考文献:

Kenneth A.Reek 著  徐波 译.c和指针.人民邮电出版社.2008

 

 

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【OJ】 : 容斥原理计算出 1< =.. 下一篇stm32f10x单片机进阶--spi使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目