qsort(words, size1, size2, compareWords);
里面的比较词:
int compareWords(const void *ac, const void *bc)
这有效:
char const *a = *(const char **)ac;
这些不会(a
获得一些垃圾值):
char const *a = ac;
char const *a = (const char *) ac;
理由是什么?
此外,在某些示例中,我看到size2
为sizeof(char *)
。这不应该是sizeof(*words)
吗?
单词声明为:
char *words[] = {"abc", "pqr", "abcd", "pqsl"};
答案 0 :(得分:3)
当qsort
T数组时,您的比较函数必须将其const void*
指针转换为const T*
,因为T不能按值获取。
如果words
是char*
或char const *
的数组,则必须将参数分别转换为char* const *
或char const * const *
,这在说这个时很自然方式。