Читаю C++ Primer плюс на массивах, и он говорит следующееC массив ++, установка ArraySize во время выполнения
typeName arrayName[arraySize];
//Arraysize cannot be a variable whose value is set while the program is running"
Однако, я написал программу
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int array[n];
for(int i=0; i<n; i++)
{
cout<<array[i]<<endl;
}
}
И это прекрасно работает, Я могу установить размер массива во время выполнения. Я не получаю ошибок компиляции или не запускает время сбоев.
Может кто-нибудь объяснить, что происходит?
Благодаря
Это уже не просто расширение компилятора, а часть стандарта C99, позволяющая массивы с переменным размером в стеке. (см. также https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html) – Florian
@Florian C++ не включает все C99. VLA не являются стандартными в любой версии C++ – NathanOliver
wow, которая меня удивляет, но вы правы. Но на самом деле, если вам нужен VLA на C++, вы бы использовали вектор <> в любом случае, не так ли? – Florian