[英]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;
理由是什么?
另外,在某些示例中,我看到size2
为sizeof(char *)
。 这不应该是sizeof(*words)
吗?
单词声明为: char *words[] = {"abc", "pqr", "abcd", "pqsl"};
当对一个T数组进行qsort
,您的比较函数必须将其const void*
指针转换为const T*
,因为T不能被值接受。
如果words
是char*
或char const *
的数组,则必须分别将参数转换为char* const *
或char const * const *
,这是很自然的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.