# Двумерный динамический массив

<figure><img src="https://3428282341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8g6l9OgxZaxwQ9lhNvMb%2Fuploads%2FKLe7GxWMl7dsqukgPCf6%2FSlide%2016_9%20-%2043.png?alt=media&#x26;token=dea5521e-cd5d-49c1-b231-4d43d2614029" alt=""><figcaption></figcaption></figure>

Двумерный динамический массив представляет собой массив указателей на уже одномерные массивы.

```cpp
int**arr = new int*[row];  // создаем массив указателей на другие массивы
```

Созданный массив нужно соответственно заполнить.

```cpp
 for (int i = 0; i < row; i++)  // заполняем массив указателями
 {
     arr[i] = new int[col];
 }

```

И, конечно, нужно не забыть подчистить за собой память

```cpp
for (int i = 0; i < row; i++)  // удаление массива
{
    delete [] arr[i];
}

delete [] arr;
```

***

Пример заполнения двумерного массива. Заполняем массивы на которые ссылается наш изначальный массив указателей.

```cpp
for (int i = 0; i < row; i++)  // заполнение массива
{


    for (int x = 0; x < col; x++)
    {
        arr[i][x] = rand() % 20;
    }


}
```

```cpp
for (int i = 0; i < row; i++)  // вывод массива
{


    for (int x = 0; x < col; x++)
    {
        cout << arr[i][x] << "\t|\t";
    }
    cout << endl;

}
```

<figure><img src="https://3428282341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8g6l9OgxZaxwQ9lhNvMb%2Fuploads%2FaGmbCpvjruiHCam95mzF%2Fimage.png?alt=media&#x26;token=fb62e715-57ab-4f82-943e-b21f24c60abb" alt=""><figcaption><p>результат</p></figcaption></figure>

***

Так как массив динамический, мы можем указывать количество элементов во время компиляции.

```cpp
int row;
int col;

cout << "Enter rows: ";      // ввод кол-ва строк/колонок
cin >> row;
cout << endl << "Enter columns: ";
cin >> col;

cout << "\n\n";
cout << row << " rows" << endl;
cout << col << " columns" << endl << endl;




int**arr = new int*[row];  // массив указателей на другие массивы



for (int i = 0; i < row; i++)  // заполняем массив указателями
{
    arr[i] = new int[col];
}




for (int i = 0; i < row; i++)  // заполнение массивов
{


    for (int x = 0; x < col; x++)
    {
        arr[i][x] = rand() % 20;
    }


}

for (int i = 0; i < row; i++)  // вывод массива
{


    for (int x = 0; x < col; x++)
    {
        cout << arr[i][x] << "\t|\t";
    }
    cout << endl;

}




for (int i = 0; i < row; i++)  // удаление (очистка) массива
{
    delete [] arr[i];
}

delete [] arr;
```

<figure><img src="https://3428282341-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8g6l9OgxZaxwQ9lhNvMb%2Fuploads%2FrOl3gu7L2WifN4WojmOc%2Fimage.png?alt=media&#x26;token=f5c33281-8cfc-40d3-b1a8-99cafacd188b" alt=""><figcaption><p>результат</p></figcaption></figure>
