Динамическое выделение памяти под многомерный массив - C (СИ)

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

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

Проблема с выводом многомерного массива. Может память неправильно выделяю? Помогите чайнику.
Листинг программы
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <clocale>
  5. int main()
  6. {
  7. setlocale(LC_ALL, "Rus");
  8. int n;
  9. int m;
  10. int i, j;
  11. int *p;
  12. printf("Введите N строк: ");
  13. scanf("%d",&n);
  14. printf("Введите M столбцов: ");
  15. scanf("%d",&m);
  16. p=(int*)malloc(n*m*sizeof(int));
  17. for(i=0;i<n;i++)
  18. {
  19. for(j=0;j<m;j++)
  20. {
  21. printf("Введите a[ %d ][ %d ]: ",i+1,j+1);
  22. scanf("%d",&p[i,j]);
  23. }
  24. }
  25. printf("Полученная матрица:\n\n");
  26. for(i=0;i<n;i++)
  27. {
  28. for(j=0;j<m;j++)
  29. {
  30. printf("a[ %d ][ %d ]: \n",p[i,j]); // доделать!
  31. }
  32. }
  33. free(p);
  34. getch();
  35. }

Решение задачи: «Динамическое выделение памяти под многомерный массив»

textual
Листинг программы
  1. int **p;
  2. p = (int **)malloc(n*sizeof(int *));
  3. for(i=0; i<n; i++)
  4.   *p = (int *)malloc(m*siseof(int));
  5. p[i][j] = // теперь уже имеет смысл

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

  1. Объявляется двумерный массив типа int **p;
  2. С помощью функции malloc() динамически выделяется память под n строк (размер каждой строки - m элементов);
  3. Для каждой строки массива p[i] выделяется память под m элементов с помощью функции malloc();
  4. Теперь p[i][j] - это элемент массива, который может быть использован в коде.

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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