2014-09-29 22 views
0

你好,我想執行使用動態內存分配插入排序。這裏是我的代碼,這段代碼給我錯誤,左值是必需的。請幫助我。插入使用動態內存分配排序

int *cardSorter(int *arrayPointer,int size){ 
    int j,i,key; 
    for(j=1;j<size;j++){ 
     key=*(arrayPointer+j); 
     i=j-1; 
     while(i>=0||*(arrayPointer+i)>key){ 
      *((arrayPointer+i)+1)=*(arrayPointer+i); 
      i--; 
     } 
     //GIVING ERROR AT THIS LINE : lvalue requied 
     *(arrayPointer+i)+1=key; 
    } 
    return arrayPointer; 
} 

這裏ArrayPointer指向我動態分配的內存。

+0

嘿 - 縮進加上表情沒有足夠的括號所以我必須認真考慮運算符優先級:) – 2014-09-29 02:45:13

+0

對不起,我是堆棧溢出新手我不知道如此粘性h關於如何發佈適當的縮​​進 – 2014-09-29 02:45:38

+0

我們注意到,:) – 2014-09-29 02:46:06

回答

1

正如您的評論說,

//GIVING ERROR AT THIS LINE : lvalue requied 
*(arrayPointer+i)+1=key; 

應該

*(arrayPointer+i+1) = key; 

,或者更容易閱讀,

arrayPointer[i+1] = key; 
+0

確定它的工作,但是當我試圖打印排序的值時,它是priting一些值和一些垃圾值或地址。 請告訴如何打印由功能 – 2014-09-29 02:56:53

+0

@JustinJames'返回的值while(i> = 0 || *(arrayPointer + i)> key){'所以您可以讀出已分配的內存。它應該是'&&'。 – timrau 2014-09-29 03:07:22

+0

哦..謝謝了很多因爲失誤。 – 2014-09-29 03:09:55