2014-09-29 38 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