c qsort字符串数组

时间:2013-08-23 10:17:39

标签: c string qsort

    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"};

1 个答案:

答案 0 :(得分:3)

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

如果wordschar*char const *的数组,则必须将参数分别转换为char* const *char const * const *,这在说这个时很自然方式。