Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcija-12.pdf
Скачиваний:
28
Добавлен:
10.02.2016
Размер:
367.6 Кб
Скачать

{return a+b;}

Обратите внимание на использование в данной программе функции getche(). Она позволяет программе обрабатывать введенный символ, не дожидаясь нажатия клавиши <enter>. Использование в подобной ситуации функции getchar() требует нажатия клавиши <enter> для завершения ввода (после нажатия необходимого символа), и это приводит не совсем к корректной работе программы (повторному выводу текста «input char»).

Динамические одномерные массивы

Если количество элементов массива известно до выполнения программы, массив определяется как статический в операторе описания переменных. Если количество элементов массива достаточно большое, или же массив необходим в программе лишь на короткое время, или же размер его определяется только в процессе работы программы, то создается динамический массив.

Особенность динамического массива, как и простой динамической переменной, – это отсутствие имени и возможность обращения к элементам только через переменнуюуказатель, которой присвоен начальный адрес области памяти, выделяемой массиву в «куче».

Память под динамический массив выделяется с помощью операции new или функции malloc(). Обнуления динамической памяти при ее выделении не происходит. Освобождается память с помощью операции delete; (размер массива при этом не указывается) или функции free ();

int n=10;

int *ptra= new int[n]; delete [] ptra;

double *ptrb = (double *) malloc (n* sizeof (double)); //#include <stdlib.h> free (ptrb);

Способы определения динамических одномерных массивов

1. В сегменте данных задан указатель на int, который инициализируется адресом динамического одномерного массива, расположенного в куче.

сегмент данных

 

 

куча

int *par

 

 

 

par[i] ==*(par+i)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <iomanip>

 

 

void Vvod (int mas[], int kol_a);

 

void Vyvod (int mas[], int kol_a);

 

const int n = 5;

 

 

int main ()

 

 

{

 

 

static int *par = new int [n];

 

Vvod (par,n);

 

 

Vyvod (par,n);

// освобождение памяти, занимаемой динамическим массивом

delete [] par;

_getch();

 

15

Программирование – лекция 12 (лекции Стрикелевой Л.В.)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]