Например: < /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.
}
}
< /code>
Я искал в Интернете, и я нашел этот вопрос, и я обнаружил, что вы можете сделать это только в том случае, если вы указали длину строки как постоянную. Как array2d = new [size1] [5] < /code>. < /P>
Я хочу понять, почему.
Мои предположения заключается в том, что это потому, что компиляторы рассматривают 2D массивы как «массив», в котором «массивы», поэтому им необходимо знать размер типа данных «Внутренний массив». Таким образом, они будут выделять память для нее, в зависимости от длины внешнего массива и размера памяти внутренней длины массива внешнего размера (внутреннего массива) Подробнее здесь: https://stackoverflow.com/questions/795 ... rrays-in-c