Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D -массива?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D -массива?

Сообщение Anonymous »

Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D массива? Например: < /p>

Код: Выделить всё

class ClassName
{
int* array1d;
int** array2d;

ClassName(int size1, int size2)
{
array1d = new int[size1];        // work.
array2d = new int[size1][size2]; // doesn't work.
}
}
Я искал в Интернете и нашел этот вопрос, и я обнаружил, что вы можете сделать это только в том случае, если вы указали, что длина строки является постоянной, например, array2d = new [size1] [5] .
Я хочу понять, почему. Удерживает «массивы», поэтому им нужно знать размер типа данных «внутреннего массива». Таким образом, они будут выделять память для нее, в зависимости от длины внешнего массива и размера памяти длины внутреннего массива внешнего * sizeof (внутренний массив) , так что размер внутреннего массива должен быть постоянным.
>

Подробнее здесь: https://stackoverflow.com/questions/795 ... a-1d-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»