Динамическое выделение памяти под многомерный массив - 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] = // теперь уже имеет смысл

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

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

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


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

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

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