У C ++ масиви змінної довжини не є законними. G ++ дозволяє це як "розширення" (оскільки це дозволяє C), тому в G ++ (не -pedantic
дотримуючись стандарту C ++) ви можете зробити:
int n = 10;
double a[n];
Якщо вам потрібен "масив змінної довжини" (краще називати його "динамічно розмірним масивом" у C ++, оскільки масиви належної змінної довжини заборонені), вам або потрібно динамічно розподіляти пам'ять самостійно:
int n = 10;
double* a = new double[n];
Або, ще краще, використовуйте стандартний контейнер:
int n = 10;
std::vector<double> a(n);
Якщо ви все ще хочете мати належний масив, ви можете використовувати константу , а не змінну , коли створюєте його:
const int n = 10;
double a[n];
Аналогічним чином, якщо ви хочете отримати розмір із функції в C ++ 11, ви можете використовувати constexpr
:
constexpr int n()
{
return 10;
}
double a[n()];