Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР6 - Динамич перемен в языке программирования...doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
57 Кб
Скачать
☆

Динамическое размещение массивов

При динамическом распределении памяти для массивов следует описать соответствующий указатель и присваивать ему значение, например, при помощи функции calloc(). Одномерный массив a[10] из элементов типа float можно создать следующим образом :

float *a;

a=(float*)(calloc(10,sizeof(float));

Для создания двумерного массива вначале нужно распределить память для массива указателей на одномерные массивы, а затем распределять память для одномерных массивов. Пусть, например, требуется создать массив a[m][n], это можно сделать при помощи следующего фрагмента программы:

main ()

{

double **a;

int m,n,i;

scanf("%d %d",&m,&n);

a=(double **)calloc(m,sizeof(double *));

for (i=0; i<m; i++)

a[i]=(double *)calloc(n,sizeof(double));

. . . . . . . . . . . .

}

Аналогичным образом можно распределить память и для трехмерного массива размером m,n,l. Следует только помнить, что ненужную для дальнейшего выполнения программы память следует освобождать при помощи функции free().

main ()

{

long ***a;

int m,n,l,i,j;

scanf("%d %d %d",&m,&n,&l);

/* -------- распределение памяти -------- */

a=(long ***)calloc(m,sizeof(long **));

for (i=0; i<m; i++)

{ a[i]=(long **)calloc(n,sizeof(long *));

for (j=0; j<n; j++)

a[i][j]=(long *)calloc(l,sizeof(long));

}

. . . . . . . . . . . .

/* --------- освобождение памяти ----------*/

for (i=0; i<m; i++)

{

for (j=0; j<n; j++)

free (a[i][j]);

free (a[i]);

}

free (a);

}

При работе с динамической памятью в стиле С++ нужно использовать операторы new и delete для выделения и освобождения памяти соответственно.

Задание

Выполните задание по работе с двумерными массивами из лабораторной работы № 4 «Работа с массивами в языке программирования C», взяв в качестве номера варианта значение (30-NumInList), где NumInList – Ваш номер по списку, и используя динамическое создание массивов. Размер массива должен задаваться пользователем с клавиатуры. Результат работы программы должен выводиться на экран и в файл.