c++求改正:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要用指针

#include<iostream>
using namespace std;
void main( )
{
int i,j,number,*p;
int a[10]={1,5,10,20,50,100,200,300,400,500}; //初始化数组
p=&a[0];
cout<<"输入一个数:";
cin>>number;
cout<<"原数组为:";
for(i=0;i<10;i++) //输出数组原有元素
cout<<*(p+i)<<" ";
cout<<endl;
i=0;
while(*(p+i)<number&&i<10) //找到插入的位置
i++;
for(j=9;j>=i;j--)
*(p+j+1)=*(p+j); //插入位置之后的数全往后移一个
a[i]=number;
cout<<"新数组为:";
for(i=0;i<11;i++)
cout<<*(p+i)<<" ";
cout<<endl;
}
编译没错,执行就停止工作。怎么错了?

你数组只有10个长度, 你要加一个, 当然就越界了呀.
就是这句:
*(p+j+1)=*(p+j);
也就是对*(p + 10)或p[10]进行赋值操作, 能不越界么?
温馨提示:答案为网友推荐,仅供参考
相似回答