Динамические многомерные массивы
По аналогии с одномерными массивами многомерные массивы могут создаваться динамически. Рассмотрим пример создания двухмерного массива n × m (матрица n × m), при этом значения n и m заранее неизвестны – вводятся с клавиатуры. В примере создается матрица n × m, заполняется случайными числами, выводится на печать, в конце программы память освобождается.
#include <stdio.h>
#include <stdlib.h>
void main()
{
int **p; // Указатель на указатель может быть использован для выделения памяти под
// 2-х мерный массив динамически
int n, m; // Заранее неизвестные размерности массива
int i, j; // Индексные переменные
printf("n="); scanf("%d", &n); // Ввод с клавиатуры числа строк матрицы
printf("m="); scanf("%d", &m); // Ввод с клавиатуры числа столбцов матрицы
p=malloc(n*sizeof(int *)); // Выделяем память под массив указателей
// Выделяем память для каждого указателя в массиве указателей
for(i=0; i<n; i++) p[i]=malloc(m*sizeof(int));
// Заполняем массив (матрицу) случайными числами и печатаем его
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
p[i][j]=rand() % 100; // Получаем псевдослучайное целое число
printf("%d ", p[i][j]);
}
printf("\n"); // После печать строки матрицы переход на новую строчку
}
// Освобождаем память, порядок освобождения обратен порядку выделения
for(i=0; i<n; i++) free(p[i]); // Освобождаем память для строк матрицы
free(p);// освобождаем память для массива указателей
}
Дата добавления: 2015-08-14; просмотров: 543;