Я выучил c ++ около 6 лет назад, и я помню в разделе о массивах, если вы не создавали их экземпляры с использованием new, тогда их размер был статическим и мог быть установлен только в исходном коде с литеральными константами, но не во время выполнения.
Но я просто играл с учебником на
http://www.cplusplus.com/doc/tutorial/dynamic/
и попытался сделать это без нового, и, к моему удивлению, это сработало. Я что-то неправильно понимаю?
Оригинальный код находится по указанному URL, но не так сложно увидеть, что это было из моего модифицированного кода ниже.
Я понимаю, что со строками, векторами и т. Д. ... массивы на самом деле не нужны (вероятно, объясняет, почему эта проблема никогда не случалась со мной), а просто развлекают меня:)
// rememb-o-matic
#include <iostream>
#include <new>
using namespace std;
int main ()
{
int i,n;
// int * p;
cout << "How many numbers would you like to type? ";
cin >> i;
int p[i];
// p= new (nothrow) int[i];
// if (p == 0)
// cout << "Error: memory could not be allocated";
if (false)
cout << "whut?" << endl;
else
{
for (n=0; n<i; n++)
{
cout << "Enter number: ";
cin >> p[n];
}
cout << "You have entered: ";
for (n=0; n<i; n++)
cout << p[n] << ", ";
// delete[] p;
}
return 0;
}