Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция2 Безопасность 2018.ppt
Скачиваний:
14
Добавлен:
08.12.2019
Размер:
698.88 Кб
Скачать

Указатели на структуры

Указатели на структуры определяются также как и указатели на

другие типы.

Student *ps;

Можно ввести указатель для типа struct, не имеющего имени

11

Указатели на структуры

При определении указатель на структуру может быть сразу же проинициализирован.

Student *ps=&mas[0];

Указатель на структуру обеспечивает доступ к ее элементам 2 способами:

1.(*указатель).имя_элемента 2. указатель->имя_элемента

cin>>(*ps).name; cin>>ps->title;

12

Структуры как параметры

Структуры могут передаваться в функции и служить возвращаемым значением.

13

Битовые поля

Битовые поля – это особый вид полей структуры. При описании битового поля указывается его длина в битах (целая положительная константа).

Битовые поля могут быть любого целого типа. Они используются для плотной упаковки данных. Например, с их помощью удобно реализовать флажки типа «да» / «нет».

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

14

Объединения

Объединение (union)- это частный случай структуры. Все поля объединения располагаются по одному и тому же адресу. Длина объединения равна наибольшей из длин его полей. В каждый момент времени в такой переменной может храниться только одно значение. Объединения применяют для экономии памяти, если известно, что более одного поля не потребуется. Также объединение обеспечивает доступ к одному участку памяти с помощью переменных разного типа.

0 1 2 3 4 5 6 7 8 9

x- занимает 4 байта

s – занимает 10 байтов

15

 

Объединения

16

Связанные динамические данные

Линейные списки - это данные динамической структуры, которые представляют собой совокупность линейно связанных однородных элементов и для которых разрешены следующие действия:

добавление элемента в начало (голову) списка;

добавление элемента в конец (хвост) списка;

вставка элемента между двумя любыми другими элементами списка;

удаление любого, как крайнего, так и среднего, элемента списка.

17

Связанные динамические данные

Кольцевые списки — это такие же данные, как и линейные списки, но имеющие дополнительную связь между последним и первым элементами списка.

Очередь — частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента в конец (хвост) очереди и удаление элемента из начала (головы) очереди.

Стек — частный случай линейного односвязного списка, для которого разрешено добавлять или удалять элементы только с одного конца списка, который называется вершиной (головой) стека.

Деревья — это динамические данные иерархической структуры произвольной конфигурации. Элементы дерева

называются вершинами (узлами).

18

Организация взаимосвязей в связанных динамических данных

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

Info

next

Info

 

 

 

 

Info

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next

 

 

 

 

 

next

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

Организация взаимосвязей в связанных динамических данных

Соответствующие ей объявления будут иметь такой вид:

где тип INFO может быть произвольного типа.

20