我正在嘗試爲qsort編寫一個比較函數,並且在解除引用雙指針時遇到了問題。在C中設置雙指針
予定義的結構
typedef struct {
float x;
float y;
} point;
和我做指針數組指向:如下
point* ptarr[2]={pt1,pt3} //pt1 and pt3 have type point*
我的比較函數被定義:
int compare(const void * a, const void * b){
return *(point**)a->x-*(point**)b->x; //This is wrong
}
由於和b是指向數組中值的指針,在我的情況下,它們是指向指向結構指針的指針的指針噸。因此,我將它們轉換爲雙指針(點**),然後解除引用一次,並嘗試訪問struct內的值。編譯器給了我一個「請求會員'x'的東西不是結構或聯盟」錯誤
我對此非常困惑。有人可以幫我嗎?謝謝
'point * ptarr [2] = {pt1,pt3}' - 這是如何編譯的? – 2013-02-05 06:57:11
'point * ptarr [2] = {pt1,pt3} // pt1和pt3有類型點'這實際上有效嗎? – cnicutar
對不起,我犯了一個錯字。 pt1和pt3實際上是指向* – turtlesoup