簡體   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