首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

qsort 中的比较涵数有关问题

2012-03-07 
qsort 中的比较涵数问题 buff为结构:qsort((void*)buff,record_count,record_len,condition)我发觉condit

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语言就是这样的,频繁的强制转换,在这里是最正确的用法。

热点排行