2012-05-25 64 views
0

好吧,我得到這個由環顧四周在線和這樣的工作,但有人可以解釋什麼線編號爲1和2做準確,爲什麼他們需要的qsort陣列比較功能

int structCompare(const void *a, const void *b) 
{ 
    struct trade *tempA = (struct trade *)a;//(1) 
    struct trade *tempB = (struct trade *)b;//(2) 
    return strcmp(tempA->name, tempB->name); 
} 

回答

3

投那些線通用void指針指向struct trade指針。顯式投在C多餘的當void *參與,應該被淘汰:

struct trade *tempA = a; 
struct trade *tempB = b; 
return strcmp(tempA->name, tempB->name); 

你可以這樣寫:

return strcmp(((struct trade *)a)->name, ((struct trade *)b)->name); 

我喜歡第一個,但。

+0

哦,謝謝。看到他們沒有鑄造更有意義。另外,感謝您的簡化版本。其實我有多層排序的情況下,名稱字段是相同的,但我會記住你的一線解決方案! – Andrew