Двумерный динамический массив в Си++: создание и работа
Двумерный динамический массив - это массив, который может иметь переменное количество строк и столбцов, а не фиксированный, такой как массивы созданные на стеке. Он создается и управляется программой во время выполнения.
Для создания двумерного динамического массива в языке C вам потребуется использовать указатель на указатель. Каждый указатель указывает на начало массива или на строки в массиве. Вот пример создания двумерного динамического массива с помощью стандартных функций языка C:
c
#include
#include
int main()
{
int **arr; // объявляем двумерный динамический массив
int rows, cols, i, j;
printf("Введите количество строк: ");
scanf("%d", &rows);
printf("Введите количество столбцов: ");
scanf("%d", &cols);
// выделяем память для строк, каждая указывает на блок памяти, который хранит значения элементов столбцов
arr = (int **) malloc(rows * sizeof(int *));
for (i = 0; i < rows; i++) {
arr[i] = (int *) malloc(cols * sizeof(int));
}
// инициализируем массив значениями от 0 до row*col-1
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
arr[i][j] = i*cols + j;
}
}
// выводим массив на экран
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// освобождаем память
for (i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
В данном примере мы сначала объявляем указатель на указатель типа int, который будет хранить наш двумерный массив. Затем мы запрашиваем у пользователя количество строк и столбцов, которые он хочет в массиве.
Далее мы выделяем память для наших строк, каждая из которых хранит указатель на блок памяти, который содержит элементы каждого столбца. Мы инициализируем массив значениями от 0 до row*col-1, чтобы убедиться, что все элементы массива работают правильно.
Затем мы выводим массив на экран, используя цикл for вложенный в другой цикл for, чтобы пройти через каждый элемент массива и вывести его на экран.
Наконец, мы освобождаем память, которую мы выделили для нашего массива, чтобы предотвратить утечки памяти.
Использование двумерного динамического массива в языке C может быть полезно в различных приложениях, где требуется использовать массивы переменного размера, например, при работе с изображениями, матрицами данных, пространственном анализе и т.д.