繁体   English   中英

c qsort字符串数组

[英]c qsort string array

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

当对一个T数组进行qsort ,您的比较函数必须将其const void*指针转换为const T* ,因为T不能被值接受。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM