Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора основы.docx
Скачиваний:
9
Добавлен:
09.02.2015
Размер:
49.22 Кб
Скачать

Void free(void *block)

Функция освобождает блок памяти по указателю *block и делает его доступным для последующих выделений памяти. Указатель должен указывать на блок, полученный ранее вызовом malloc, calloc или realloc.

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

  • Динамические структуры данных.

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

Линейная динамическая структура - изменяемая последовательность элементов. Примеры таких структур:

стек (элемент можно добавлять только в конец; удаляется только последний элемент);

очередь (элемент можно добавлять только в конец; удаляется только первый элемент);

дек (добавление и удаление элементов и с начала, и с конца).

Дерево - структура, в которой каждый элемент (вершина) ссылается на один или более элементов следующего уровня.

В сетевой структуре никаких ограничений на связи не накладывается.

Линейные динамические структуры, такие как стеки, очереди и деки, при известном количестве элементов в них можно реализовать в виде динамических или статических одномерных массивов. В противном случае используют списки.

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

линейные односвязные списки - единственное адресное поле содержит адрес следующего элемента, для последнего элемента списка этот адрес равен нулю (NULL),

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

линейные двусвязные списки - каждый элемент содержит адреса предыдущего и последующего элемента; первый элемент в качестве адреса предыдущего элемента, а последний элемент в качестве адреса последующего элемента содержат нули (NULL),

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

n-связные списки - каждый элемент включает несколько адресных полей, в которых записаны адреса других элементов или NULL.

Для описания элементов списка используют в программах на языке Си структуры.

  • Форматы данных.

Целые числа

Целые числа могут занимать байт, слово или двойное слово. Они могут быть знаковыми и беззнаковыми. В знаковых целых самый старший бит байта, слова или двойного слова, занимаемого числом, отводится для индикации знака числа. Нуль соответствует плюсу, 1 — минусу. Таким образом, возможный диапазон представляемых значений для знаковых целых составляет: от –128 до +127 для байтовых величин, от –32768 до +32767 для слов, от –231 до 231-1 для двойных слов. Беззнаковые целые могут принимать значения: от 0 до 255 для байтовых величин, от 0 до 65535 для слов, от 0 до 232-1 для двойных слов.

Двоично-десятичные целые числа

Двоично-десятичные целые — это набор четырехбитовых беззнаковых величин, каждая из которых может принимать значения от 0 до 9. Двоично-десятичные числа могут быть в обычном или упакованном формате. Обычный формат использует только младшие четыре бита байта, в этом формате каждая цифра представляется одним байтом так же, как и целочисленные беззнаковые значения от 0 до 9. Упакованный формат предусматривает использование старших четырех бит байта для представления более старшей значащей цифры десятичного числа, т.е. в упакованном формате требуется в два раза меньше байт для представления десятичных чисел одинаковой разрядности.

Битовые поля

Битовые поля — это непрерывные последовательности битов, которые могут располагаться в любом месте памяти и начинаться с любого бита любого байта по любому адресу. Началом битового поля считается самый младший используемый бит самого младшего байта. Битовые поля могут иметь длину до 32 бит.

Строки

Строки — это непрерывные последовательности битов, байтов, слов или двойных слов в памяти. Битовые строки могут располагаться в любом месте памяти и начинаться с любого бита любого байта по любому алресу. Максимальная длина битовых строк 232-1 бит. Строки байт, слов и двойных слов могут занимать до 232-1 байт (4 Гб).