关于动态数组的一个有关问题
关于动态数组的一个问题
下面是自己写的一个程序,为什么加入“delete [] p;”后会出错?求教大神
#include<iostream>
using namespace std;
//秦九韶算法
int main()
{
int n;
float *p,value,x;
cout << "输入多项式的次数: ";
cin >> n;
p = new float[n];
cout << "输入多项式系数:";
for( int i=0;i<=n;++i)
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
//delete [] p;
return 0;
}
------解决方案--------------------
下面是自己写的一个程序,为什么加入“delete [] p;”后会出错?求教大神
#include<iostream>
using namespace std;
//秦九韶算法
int main()
{
int n;
float *p,value,x;
cout << "输入多项式的次数: ";
cin >> n;
p = new float[n];
cout << "输入多项式系数:";
for( int i=0;i<=n;++i)
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
//delete [] p;
return 0;
}
------解决方案--------------------
- C/C++ code
#include<iostream>
using namespace std;
//秦九韶算法
int main()
{
int n;
float *p,value,x;
cout << "输入多项式的次数: ";
cin >> n;
p = new float[n];
cout << "输入多项式系数:";
for( int i=0;i<n;++i)//把=等号去掉,你数组越界了
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
delete [] p;
return 0;
}
------解决方案--------------------
- C/C++ code
#include<iostream>
using namespace std;
//秦九韶算法
int main()
{
int n;
float *p,value,x;
cout << "输入多项式的次数: ";
cin >> n;
p = new float[n+1]; //多加一位
cout << "输入多项式系数:";
for( int i=0;i<=n;++i)
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
delete [] p;
return 0;
}