函数指针

创作人 Leo


编辑时间 Wed Jan 1,2020 at 10:13


函数指针

linklist.h

/*从链表中删除数据

返回:int 删除成员数 */

int del_data_llink(LLink *llink, EleType e, int (*equals_callback_llink)(EleType , EleType )) ;



/*遍历链表 */

void foreach_llink(LLink *llink, void (*iterator_callback_llink)(EleType)) ;

test.c

/* 自定义数据类型 */
#define UDF_ELETYPE 1
typedef char* EleType ;
 
#include "linklist.h"
 
int equals_callback_llink(EleType e1, EleType e2);
void iterator_callback_llink(EleType e1);
 
int main(int argc, char* argv[])
{
 
    LLink link;
 
    init_llink(&link);
 
    append_data_llink(&link, "hellosss");
    append_data_llink(&link, "world");
 
    del_data_llink(&link, "world", equals_callback_llink);
 
    foreach_llink(&link, iterator_callback_llink);
 
 
    return 0;
}

使用函数指针可以很灵活的实现泛型操作,比如一个泛型链表,就可以通过泛型+函数指针实现数据的遍历,回调操作等逻辑

一些开源库也是使用这种方法实现的用户回调操作,比如glib库


阅读:886
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 2578
  • web rtc 学习笔记(一) 2355
  • Mac系统编译PHP7【20190929更新】 2304
  • react 学习笔记(一) 2245
  • zksync 和 layer2 2237
  • Hadoop 高可用集群搭建 (Hadoop HA) 2182
  • Hadoop Map Reduce 案例:好友推荐 2151
  • 小白鼠问题 2085
  • Linux 常用命令 2082
  • 安徽黄山游 2058
简介
不定期分享软件开发经验,生活经验