Array [n] vs Array [10] - 初始化具有变量与实数的数组

Array [n] vs Array [10] - 初始化具有变量与实数的数组

我的代码出现以下问题:

int n = 10;double tenorData[n]   =   {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

返回以下错误:

error: variable-sized object 'tenorData' may not be initialized

而使用double tenorData[10]作品。

谁知道为什么?


守候你守候我
浏览 724回答 2
2回答

海绵宝宝撒

在C ++中,可变长度数组是不合法的。G ++允许将其作为“扩展”(因为C允许),因此在G ++中(不-pedantic遵循C ++标准),您可以:int&nbsp;n&nbsp;=&nbsp;10;double&nbsp;a[n];&nbsp;//&nbsp;Legal&nbsp;in&nbsp;g++&nbsp;(with&nbsp;extensions),&nbsp;illegal&nbsp;in&nbsp;proper&nbsp;C++如果你想要一个“可变长度数组”(在C ++中更好地称为“动态大小的数组”,因为不允许使用适当的可变长度数组),你必须自己动态分配内存:int&nbsp;n&nbsp;=&nbsp;10;double*&nbsp;a&nbsp;=&nbsp;new&nbsp;double[n];&nbsp;//&nbsp;Don't&nbsp;forget&nbsp;to&nbsp;delete&nbsp;[]&nbsp;a;&nbsp;when&nbsp;you're&nbsp;done!或者,更好的是,使用标准容器:int&nbsp;n&nbsp;=&nbsp;10;std::vector<double>&nbsp;a(n);&nbsp;//&nbsp;Don't&nbsp;forget&nbsp;to&nbsp;#include&nbsp;<vector>如果你仍然需要一个合适的数组,你可以在创建它时使用常量而不是变量:const&nbsp;int&nbsp;n&nbsp;=&nbsp;10;double&nbsp;a[n];&nbsp;//&nbsp;now&nbsp;valid,&nbsp;since&nbsp;n&nbsp;isn't&nbsp;a&nbsp;variable&nbsp;(it's&nbsp;a&nbsp;compile&nbsp;time&nbsp;constant)同样,如果你想从C ++ 11中的函数中获取大小,你可以使用constexpr:constexpr&nbsp;int&nbsp;n(){ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;10;}double&nbsp;a[n()];&nbsp;//&nbsp;n()&nbsp;is&nbsp;a&nbsp;compile&nbsp;time&nbsp;constant&nbsp;expression
打开App,查看更多内容
随时随地看视频慕课网APP