我试图了解使用此功能的好处......
double *x = new double[n];
而不只是使用这个......
double x[n];
由于
#include <iostream>
using namespace std;
main()
{
int n;
cout<<"# of elements in array"<<endl;
cin>>n;
double *x = new double[n]; //or double x[n]
int i;
for(i=0;i<n;i++)
{
cout<<x[i]<<endl;
}
return 0;
}
答案 0 :(得分:5)
std::vector<double> x(n);
击败你拥有的东西。
好处是
double *x = new double[n];
是合法的,而
double x[n];
不是,除非n
是编译时常量(在你的情况下,它不是)。
C ++不支持变长数组。
答案 1 :(得分:0)
动态分配可以为您提供很多帮助。
首先,您可以从创建它的函数返回此数组。
严格C(C89)不允许动态堆栈分配。 double x[n]
会在许多编译器上抛出错误。
答案 2 :(得分:0)
如果动态分配的数组太大,则不会导致Stack Overflow。
指针存在于堆栈中,但内容存在于堆上。然而,缺点包括由于间接导致访问速度较慢,可能存在内存泄漏以及更难以通过的代码。