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

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

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

Вообщем пытался найти на форуме, но почему то так и не получилось (видимо плохл искал ). Как выделить память под двумерный массив через функцию. Вот как делал я :
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void CreateArray(float **X, int strings, int length)
  4. {
  5. X = (float **)malloc(strings * sizeof(float *));
  6. for (int i = 0; i < strings; i++)
  7. X[i] = (float *)malloc(length * sizeof(float));
  8. }
  9. void FreeArray(float **X, int strings)
  10. {
  11. for (int i = 0; i < strings; i++)
  12. free(X[i]);
  13. free(X);
  14. }
  15. int main(void)
  16. {
  17. float **A;
  18. CreateArray(A, 15, 6);
  19. FreeArray(A,15);
  20. system("pause");
  21. return 0;
  22. }
Ругаеться что A используеться без инициализации, и еще просьба проверить правильно ли я освободил память.

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

textual
Листинг программы
  1. #include <stdlib.h>
  2.  
  3. float** createArray(int strings, int length) {
  4.     float** arr = malloc(strings * sizeof(float*));
  5.     float* data = malloc(strings * length * sizeof(float));
  6.     for (int i=0; i < strings; ++i) {
  7.         arr[i] = data + i*length;
  8.     }
  9.     return arr;
  10. }
  11.  
  12. void freeArray(float** arr) {
  13.     free(arr[0]);
  14.     free(arr);
  15. }
  16.  
  17. int main() {
  18.     float** arr = createArray(15, 6);
  19.     freeArray(arr);
  20.     return 0;
  21. }

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

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

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


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

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

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы