我想用动态方式用指针对数组进行排序,但是输出不正确,为什么我不知道,所以请你能检查一下这个代码
#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]
但是为什么指针与明星不起作用? !
答案 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;