Как выделить динамическую память для матрицы? - C (СИ)
Формулировка задачи:
Как выделить динамическую память для матрицы?
Решение задачи: «Как выделить динамическую память для матрицы?»
textual
Листинг программы
int n = ...; // число строк int m = ...; // число столбцов int **matrix = malloc(n*sizeof(int*)); matrix[0] = malloc(m*n*sizeof(int)); for (int i=1; i < n; ++i) { matrix[i] = matrix[0] + m*i; } // ..... free(matrix[0]); free(matrix);
Объяснение кода листинга программы
В данном коде выделяется динамическая память для матрицы.
- Сначала объявляются две переменные:
n
- количество строк в матрице.m
- количество столбцов в матрице.
- Затем с помощью функции
malloc
выделяется память подn
указателей наint
. - Далее с помощью функции
malloc
выделяется память под массивm
элементов типаint
, который будет использоваться как первая строка матрицы. - В цикле
for
начиная со строки 1 и доn-1
включительно, мы присваиваем каждому указателю на строку матрицы адрес начала следующей строки массива. Таким образом, каждая строка матрицы будет указана на свой массив в памяти. - После использования матрицы, память освобождается с помощью функции
free
сначала для первого указателя, а затем для всех указателей на строки матрицы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д