通用链表(list)
void* 万能指针,可以与任意类型的指针互换
int* = void*
void* = int*
需要把链表的数据域换成void*类型。
回调
由于通用链表存储的类型不确定,因此类型的运算规则不确定,当需要使用到关系运算运算时,需要链表的使用者提供运算(提供一个函数供链表调用),这种模式叫回调。
void* 不能直接解引用,需要先转换成其它有效类型。
例如:
标准库的中qsort函数:
void qsort(void *base, size_t nmemb, size_t size,int(*compar)(const void*, const void*));
base:带排序数组的首地址
nmemb:每个元素多少个字节
size:有多少个元素
int(*compar)(const void *, const void *):元素与元素间怎么比较(自定义比较函数)