Динамическое выделение памяти под многомерный массив - 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] - это элемент массива, который может быть использован в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д