Delete A; // освободить память

}

Итак, мы хотим выделить в памяти место под новый массив целых чисел во время работы

программы. Мы уже знаем его размер, пусть он хранится в переменной N (это число обязательно должно быть больше нуля). Оператор выделения памяти new вернет нам адрес нового выделенного блока и для работы с массивов нам надо где-то его запомнить. Вы уже знаете, что есть специальный класс переменных для записи в них адресов памяти – указатели.

• динамические массивы используются тогда, когда на момент написания программы раз-

мер массива неизвестен

• для того, чтобы работать с динамическим массивом, надо объявить указатель соответствующего типа (в нем будет храниться адрес первого элемента массива);

int *A;

• когда требуемый размер массива стал известен, надо использовать оператор new языка

Си++, указав в скобках размер массива (в программе для краткости нет проверки на положительность N);

A = newint[N];

нельзя использовать оператор new при отрицательном или нулевом N;

• после выделения памяти надо проверить, успешно ли оно прошло; если память выделить не удалось, то значение указателя будет равно NULL, использование такого массива приведет к сбой программы;

• работа с динамическим массивом, на который указывает указатель А, идет также, как и с обычным массивом размера N (помните, что язык Си не следит за выходом за границы

массива);

• после использования массива надо освободить выделенную память, вызвав оператор

delete A;

• после освобождения памяти значение указателя не изменяется, но использовать его уже

нельзя, потому что память освобождена;

• учитывая, что при добавлении числа к указателю он сдвигается на заданное число ячеек

ЗАДАННОГО ТИПА, то следующие записи равносильны и вычисляют адрес i - ого эле-

мента массива:

&A[i] и A+i

Отсюда следует, что A совпадает с &A[0], и поэтому имя массива можно использовать

как адрес его начального элемента;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: