Преобразовать статический массив в динамический - C (СИ)

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

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

Доброго всем и всего, да и побольше! Пытаюсь понять что такое динамические массивы в Си, и как их готовят. Но что то не могу найти толковой информации. Теорию нашел, функции знаю, но как их применить - нет. Видел примеры переделки статических массивов в динамический, но там просят переделать достаточно сложный код, и черт ногу сломит в том коде. Может кто то сказать, или полностью переделать в следующем коде статический массив в динамический? Чтобы наглядно посмотрел и понял отличия. А то чет как то башка не освобождает память занятую статическими массивами
// программа распечатывает на экране квадратную матрицу заданного пользоветелем размера
#include <stdio.h>
 
// ну тут есесна этого в дин. массиве быть не должно, можно заменить на рандомайзер
int Mas[9][9]=
    {
        { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
        { 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
        { 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 },
        { 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 },
        { 0 , 0 , 0 , 0 , 5 , 0 , 0 , 0 , 0 },
        { 0 , 0 , 0 , 0 , 0 , 6 , 0 , 0 , 0 },
        { 0 , 0 , 0 , 0 , 0 , 0 , 7 , 0 , 0 },
        { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 8 , 0 },
        { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 9 }
    };
 
int main(void)
{
    int i, j, n;
    printf("Enter the size of square matrix (not more then 9): ");
    scanf("%d", &n);
// вывод на экран квадратной матрицы заданного размера (размер вводится пользователем выше)
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            printf("%2d", Mas[i][j]);
        }
        printf("\n");
    }
    system("pause");
}

Решение задачи: «Преобразовать статический массив в динамический»

textual
Листинг программы
int size;
cout << "Enter size of array"; //размер массива
cin >> size;
int **Mas=new int *[size]; //указатели на строки
for(int i=0;i<size;i++)
   Mas[i]=new int[size]; //формирование строк
for (int i=0; i<size; i++)
    for (int j=0; j<size; j++)
            Mas[i][j]=rand(); //рандомное заполнение массива
//действия с массивом
for (int i = 0; i < size; i++) //освобождение памяти
{
   delete []Mas[i];
}
   delete []Mas;

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

  1. Программа запрашивает у пользователя размер массива и сохраняет его в переменную size.
  2. Программа выделяет память под массив указателей на int, используя оператор new, и сохраняет его в переменную Mas.
  3. Затем программа, используя цикл for, выделяет память под каждый элемент массива, используя оператор new, и сохраняет его в соответствующий элемент массива Mas.
  4. Далее программа заполняет массив случайными числами, используя два вложенных цикла for и оператор rand().
  5. После выполнения всех операций с массивом, программа освобождает память, используя два вложенных цикла for и функцию delete [].
  6. Наконец, программа освобождает память под массив указателей на int, используя функцию delete [].

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


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

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

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