Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Динамические структуры строятся из динамических элементов




Разновидности динамических структур

Примеры.

Операция delete

Операция new

Пример.

Функция free

 

Функция free освобождает память, выделенную функцией malloc.

 

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

free (str);

 

В версиях, начиная с 3-й, Borland C++ содержит операции (операторы) new и delete. Они являются улучшенными вариантами функций malloc и free.

 

Операция new позволяет выделять память, необходимую для размещения переменной, структурной переменной или массива. Для переменной необходимо указывать тип и в случае массива – размер. Операция new может записывать значение в созданную переменную.

В случае успешного завершения new возвращает адрес созданной переменной.

В отличие от функции malloc, при использовании операции new не нужно указывать количество байт памяти, которое необходимо выделить.

 

Примеры:

/* Опишем указатели на целую и вещественную переменные и указатель на символ */int * uk_i; double * uk_d;char * uk_c; /* Выделим память под число типа int адрес памяти присвоим указателю uk_i */uk_i = new int;* uk_i=10; // запишем число 10 в ячейку памяти с адресом uk_i; /* Выделим память под число типа double, запишем в нее число 3.1415 и присвоим указателю uk_d ее адрес */uk_d=new double (3.1415); /* Выделим память под числоuk_с=new char [ 60 ];

 

Можно выполнить проверку:

If!(uk_i && uk_d && uk_c){cout << "Не хватает памяти";}

 

Операция delete освобождает память, выделенную операцией new.

Продолжим предыдущий пример, освободим выделенную память:

delete uk_i;delete uk_d;delete [ kol_s ] uk_s;

где kol_s – количество символов в строке.

 

Тема 1.10. Динамические структуры

Цель изучения темы

· познакомиться с различными динамическими структурами

· научиться работать с динамическими структурами в языке С++

 

До сих пор все рассмотренные программы позволяли работать с массивами фиксированной длины, например массив из 100 элементов. В реальной жизни обычно требуется, чтобы программа могла принимать от 50 до нескольких тысяч элементов и при этом экономно использовала ресурсы компьютера. Такие задачи решаются при помощи динамических структур.

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

 

Динамический элемент состоит из двух частей:

· информационная часть – хранит значение элемента

· указатели – это адреса одного или нескольких других динамических элементов

В простейшем случае динамический элемент имеет вид:

 

 

В данном случае информационная часть состоит из одного поля, которое используется для хранения одного целого числа, указатель – из указателя на один элемент.

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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