Выделение памяти под двумерный массив через функцию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вообщем пытался найти на форуме, но почему то так и не получилось (видимо плохл искал ). Как выделить память под двумерный массив через функцию. Вот как делал я :
#include <stdio.h>
#include <stdlib.h>
 
void CreateArray(float **X, int strings, int length)
{
    X = (float **)malloc(strings * sizeof(float *));
    for (int i = 0; i < strings; i++)
        X[i] = (float *)malloc(length * sizeof(float));
}
 
void FreeArray(float **X, int strings)
{
    for (int i = 0; i < strings; i++)
        free(X[i]);
    free(X);
}
 
int main(void)
{
    float **A;
 
    CreateArray(A, 15, 6);
        FreeArray(A,15);
    system("pause");
    return 0;
}
Ругаеться что A используеться без инициализации, и еще просьба проверить правильно ли я освободил память.

Решение задачи: «Выделение памяти под двумерный массив через функцию»

textual
Листинг программы
#include <stdlib.h>
 
float** createArray(int strings, int length) {
    float** arr = malloc(strings * sizeof(float*));
    float* data = malloc(strings * length * sizeof(float));
    for (int i=0; i < strings; ++i) {
        arr[i] = data + i*length;
    }
    return arr;
}
 
void freeArray(float** arr) {
    free(arr[0]);
    free(arr);
}
 
int main() {
    float** arr = createArray(15, 6);
    freeArray(arr);
    return 0;
}

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

  1. Подключение стандартной библиотеки.
  2. Создание функции createArray, которая выделяет память под двумерный массив.
  3. Вызов функции malloc для выделения памяти под указатель на первый элемент массива.
  4. Вызов функции malloc для выделения памяти под данные массива.
  5. Инициализация массива с помощью цикла for.
  6. Возвращение двумерного массива.
  7. Создание функции freeArray, которая освобождает память.
  8. Освобождение памяти, выделенной под массив.
  9. Вызов функции freeArray в функции main.
  10. Выход из функции main.

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


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

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

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