带有指针的C ++动态数组

时间:2014-03-01 21:04:11

标签: c++ arrays sorting dynamic

我想用动态方式用指针对数组进行排序,但是输出不正确,为什么我不知道,所以请你能检查一下这个代码

#include <iostream>
using namespace std;
int main (){
    int temp,i,j,*p1,n,t;
    cin>>n;
    p1 = new int [n];   

    for(i=0;i<n;i++){
        cin>>*p1;
        p1++;
        }
        p1-=n;

    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++)
        if(*(p1+i) > *(p1+j))
        {
            temp = *(p1+i);
            *(p1+j) = *(p1+i);
            *(p1+j) = temp;
        }
        p1++;
    }
    p1-=n-1;

    cout<<"--------------------\n\n";
    for(i=0;i<n;i++)
        cout<<p1[i]<<"\t";

    cout<<endl;
    return 0;
}

但是,当我喜欢它的工作时

*(p1 + i)更改为p1 [i]

*(p1 + j)改变了tp p1 [j]

但是为什么指针与明星不起作用? !

1 个答案:

答案 0 :(得分:1)

这是错误:

temp = *(p1+i);
*(p1+j) = *(p1+i);
*(p1+j) = temp;

它应该是:

temp = *(p1+i);
*(p1+i) = *(p1+j); // NOTE you're assign to Ith from Jth
*(p1+j) = temp;

更新:删除第二个p1++;p1-=n-1;