Динамические многомерные массивы

По аналогии с одномерными массивами многомерные массивы могут создаваться динамически. Рассмотрим пример создания двухмерного массива 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; просмотров: 549;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.