Как сделать указатель на двумерный массив указателей в c++?

Пользователь

от elda , в категории: C/C++ , год назад

Как сделать указатель на двумерный массив указателей в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от wilburn , год назад

@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]; // чтение значения элемента


Пользователь

от jazmyne , 6 месяцев назад

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