2007年8月19日 星期日

qsort運用(II)

以下範例是將一個 integer 陣列做 qsort:
int compare(const void *pa,const void *pb);

int main(){
qsort(diff,num-1,sizeof(int),compare);
}

int compare(const void *pa,const void *pb){
int a,b;
a=*(int *)pa;
b=*(int *)pb;
if(a < b)
return -1;
}
else if(a==b){
return 0;
}
else{
return 1;
}
}
qsort限制比較函式中,所傳參數必須為(const void *, const void*)也就是一個 void 指標,在 compare 函式中,不能直接拿*pa和*pb來作比較,會出現有關void的blabla...錯誤,因此必須轉為其他型態,先以(int *)強制轉型為 int 指標,再利用 * 運算子來存取儲存於其中的 integer,便可成功編譯。

沒有留言: