0
    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;

理由是什么?

此外,在某些示例中,我认为size2sizeof(char *). 这不应该sizeof(*words)吗?

词被声明为: char *words[] = {"abc", "pqr", "abcd", "pqsl"};

4

1 回答 1

3

qsorting 一个 T 数组时,您的比较函数必须将其const void*指针转换为const T*,因为 T 不能按值获取。

如果wordschar*or的数组char const *,则必须将参数分别转换为char* const *or char const * const *,这样说很自然。

于 2013-08-23T10:28:11.227 回答