Как выделить динамическую память для матрицы? - 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);

Объяснение кода листинга программы

В данном коде выделяется динамическая память для матрицы.

  1. Сначала объявляются две переменные:
    • n - количество строк в матрице.
    • m - количество столбцов в матрице.
  2. Затем с помощью функции malloc выделяется память под n указателей на int.
  3. Далее с помощью функции malloc выделяется память под массив m элементов типа int, который будет использоваться как первая строка матрицы.
  4. В цикле for начиная со строки 1 и до n-1 включительно, мы присваиваем каждому указателю на строку матрицы адрес начала следующей строки массива. Таким образом, каждая строка матрицы будет указана на свой массив в памяти.
  5. После использования матрицы, память освобождается с помощью функции free сначала для первого указателя, а затем для всех указателей на строки матрицы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы