Преобразовать статический массив в динамический - 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;
Объяснение кода листинга программы
- Программа запрашивает у пользователя размер массива и сохраняет его в переменную
size
. - Программа выделяет память под массив указателей на int, используя оператор new, и сохраняет его в переменную
Mas
. - Затем программа, используя цикл for, выделяет память под каждый элемент массива, используя оператор new, и сохраняет его в соответствующий элемент массива
Mas
. - Далее программа заполняет массив случайными числами, используя два вложенных цикла for и оператор rand().
- После выполнения всех операций с массивом, программа освобождает память, используя два вложенных цикла for и функцию delete [].
- Наконец, программа освобождает память под массив указателей на int, используя функцию delete [].
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д