2

我正在尝试了解使用此功能的好处...

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;
}
4

3 回答 3

5

强制性说明:

std::vector<double> x(n);

胜过你所拥有的。

实际答案:

好处是

double *x = new double[n];

是合法的,而

double x[n];

不是,除非n是编译时常量(在你的情况下,它不是)。

C++ 不支持可变长度数组。

于 2012-10-11T16:19:09.590 回答
0

动态分配可以让你做很多事情。

  • 首先,您可以从创建它的函数返回这个数组。

  • 严格的 C(C89) 不允许动态堆栈分配。double x[n]会在许多编译器上抛出错误。

于 2012-10-11T16:20:10.417 回答
0

如果它们太大,动态分配的数组不会导致堆栈溢出。

指针位于堆栈上,但内容位于堆上。然而,缺点包括由于间接导致的访问速度较慢、可能的内存泄漏和更难以理解的代码。

于 2012-10-11T16:37:07.343 回答