@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++.