[英]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.