通用鏈表(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 *):元素與元素間怎麼比較(自定義比較函數)