通過試驗和錯誤,我設法得到下面的字符串比較函數以按照我的意圖使用qsort(),但我不太明白爲什麼(const char *)強制轉換表達式中需要星號。可有人請剖析和解釋: -(const char *)的解釋和解釋在此字符串比較函數中投射C
int strCompare(const void *a, const void *b) {
return strcmp((const char*)a, (const char*)b);
}
附錄: -
void findStrings(int * optionStats, char strings[][MAX_STRING_SIZE + 1], int numStrings)
{
qsort(strings, numStrings, 21*sizeof(char), strCompare);
}
是否有消除調用strcmp()的通過strCompare(),只是使用的strcmp()作爲參數的方法改爲qsort()?
我相信,'MAX_STRING_SIZE + 1 == 21'否則,你說謊你的編譯器和編譯器當你對他們說謊的時候容易得到他們自己的回報。你可能會更好地使用相同的符號來表示這個值。 –
請注意,如果您要對指向char的指針數組進行排序,則需要使用不同的字符串比較例程:'int cmpStrings(const void * a,const void * b){char * a1 = *(char **)a; char * b1 = *(char **)b;返回strcmp(a1,b1); }'。 –
是MAX_STRING_SIZE + 1 == 21,在調試後將替換21。該功能似乎排序正確,但我會嘗試你的變化出於好奇。 –