русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Динамические массивы


Дата добавления: 2014-03-21; просмотров: 893; Нарушение авторских прав


Как выше уже отмечалось, массивы по своей организации в принципе являются статическими структурами данных, их размер сохраняется неизменным в течение всей работы программы или от момента создания до момента уничтожения. Термин «динамические» в данном случае относится к способу создания массивов. Такие массивы определяются при помощи указателей, а для их создания и удаления используются специальные процедуры, функции или операции динамического выделения и освобождения памяти. Такие операции могут использоваться для работы не только с динамическими массивами, но и с другими динамическими программными объектами, например, отдельными переменными.

int *p; // Указатель

p = new int; // Динамическая переменная знакового целого типа

float *b2 = new float (20.5); // Инициализация динамической переменной

int *p2;

p2 = new int [5]; // Динамический массив целых чисел из 5 элементов

 

Динамический массив отличается от обычного (автоматического, статического) еще и тем, что размер его может задаваться не только константой, но и переменной. При этом во время работы программы массив может уничтожаться, память, им занимаемая, будет освобождена, а затем указатель, при необходимости, может быть использован для организации массива. Имя такого массива останется тем же самым, но, фактически, это будет совершенно другой массив, возможно, другого размера и расположенный в другой области памяти.

delete p; // Удаление динамической переменной

delete b2;

delete [] p2; // Удаление динамического массива (освобождение памяти)

 

При удалении динамического массива указание квадартных скобок обязательно (они могут быть пустыми в большинстве случаев). Иначе будет освобождена память, занимаемая только начальным элементоа этого массива, а остальная память останется занятой и к ней не будет доступа («утечка памяти»). Если указатель, используемый в операции delete, адресует не начало блока, выделенного операцией new, то последствия операции delete могут быть непредсказуемы. Если указатель содержит значение NULL, то delete не выполняет никаких действий.



 

int size = 40;

p2 = new int [size]; // Пересоздание нового массива с тем же именем

 

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

Динамические массивы, в отличие от обычных, не могут быть инициализированы.

Массив символов может быть инициализирован строковой константой.

char vls2[] = "2nd very long string.\n";

 



<== предыдущая лекция | следующая лекция ==>
Массивы | Многомерные массивы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.232 сек.