Динамическое выделение памяти под многомерный массив - C (СИ)
Формулировка задачи:
Проблема с выводом многомерного массива. Может память неправильно выделяю? Помогите чайнику.
Листинг программы
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <clocale>
- int main()
- {
- setlocale(LC_ALL, "Rus");
- int n;
- int m;
- int i, j;
- int *p;
- printf("Введите N строк: ");
- scanf("%d",&n);
- printf("Введите M столбцов: ");
- scanf("%d",&m);
- p=(int*)malloc(n*m*sizeof(int));
- for(i=0;i<n;i++)
- {
- for(j=0;j<m;j++)
- {
- printf("Введите a[ %d ][ %d ]: ",i+1,j+1);
- scanf("%d",&p[i,j]);
- }
- }
- printf("Полученная матрица:\n\n");
- for(i=0;i<n;i++)
- {
- for(j=0;j<m;j++)
- {
- printf("a[ %d ][ %d ]: \n",p[i,j]); // доделать!
- }
- }
- free(p);
- getch();
- }
Решение задачи: «Динамическое выделение памяти под многомерный массив»
textual
Листинг программы
- int **p;
- p = (int **)malloc(n*sizeof(int *));
- for(i=0; i<n; i++)
- *p = (int *)malloc(m*siseof(int));
- p[i][j] = // теперь уже имеет смысл
Объяснение кода листинга программы
- Объявляется двумерный массив типа int **p;
- С помощью функции malloc() динамически выделяется память под n строк (размер каждой строки - m элементов);
- Для каждой строки массива p[i] выделяется память под m элементов с помощью функции malloc();
- Теперь p[i][j] - это элемент массива, который может быть использован в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д