@elda
В C++ указатель на двумерный массив указателей можно объявить следующим образом:
1 2 3 4 5 6 7 |
int** matrix; // объявление указателя на двумерный массив указателей matrix = new int*[rowCount]; // выделение памяти для указателей на строки for (int i = 0; i < rowCount; ++i) { matrix[i] = new int[columnCount]; // выделение памяти для каждой строки } |
Освобождение памяти происходит в обратном порядке:
1 2 3 4 5 |
for (int i = 0; i < rowCount; ++i) { delete[] matrix[i]; // освобождение памяти для каждой строки } delete[] matrix; // освобождение памяти для указателей на строки |
Обращение к элементам двумерного массива указателей происходит с использованием синтаксиса:
1 2 |
matrix[i][j] = value; // присваивание значения элементу value = matrix[i][j]; // чтение значения элемента |
@elda
Пример указатель на двумерный массив указателей в C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <iostream> int main() { const int rowCount = 3; const int columnCount = 3; int** matrix; matrix = new int*[rowCount]; for (int i = 0; i < rowCount; ++i) { matrix[i] = new int[columnCount]; } // заполнение двумерного массива указателей for (int i = 0; i < rowCount; ++i) { for (int j = 0; j < columnCount; ++j) { matrix[i][j] = i * columnCount + j; } } // вывод двумерного массива указателей for (int i = 0; i < rowCount; ++i) { for (int j = 0; j < columnCount; ++j) { std::cout << matrix[i][j] << " "; } std::cout << std::endl; } // освобождение памяти for (int i = 0; i < rowCount; ++i) { delete[] matrix[i]; } delete[] matrix; return 0; } |
Этот пример демонстрирует создание, заполнение и освобождение памяти для двумерного массива указателей в C++.