qsort 中的比较涵数问题
buff为 结构:
qsort((void *)buff, record_count, record_len, condition);
我发觉 condition 只能定义为
int condition(const void *inbuff, const void *keybuff);
而不能定义为
int condition(const char *inbuff, const char *keybuff);
这样来很不方便, inbuff 及keybyff 很不方便再交给其它涵数处理。
有什么办法吗?
[解决办法]
严重同意楼上的说法
因为只有void指针类型 才能进行类型转化,其他都不可以,
所以int condition(const void *inbuff, const void *keybuff);的两个参数可以换成任何类型的指针,非常的灵活。
[解决办法]
定义为void* key, void* buffer是为了处理任何一种类型,而不是专门为char而准备的,qsort是一个通用排序函数,其中关键的是你自己定义的compare函数condition.
[解决办法]
C语言就是这样的,频繁的强制转换,在这里是最正确的用法。