Экзаменационные вопросы ОП, страница 4
Описание файла
Документ из архива "Экзаменационные вопросы ОП", который расположен в категории "". Всё это находится в предмете "основы программирования" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Онлайн просмотр документа "Экзаменационные вопросы ОП"
Текст 4 страницы из документа "Экзаменационные вопросы ОП"
int fseek(FILE *stream, long offset, int ptrname)
Это объявление находится в файле заголовков stdio.h, поэтому программы, использующие эту функцию, должны включать следующую директиву препроцессора:
#include
Функция fseek() — стандартная функция языка Си, устанавливает позицию в потоке stream для следующей операции чтения-записи на расстоянии offset байтов от позиции ptrname, принимающей следующие значения:
-
0 — начало
-
1 — текущая позиция
-
2 — конец
Функция fseek() возвращает ненулевое значение для недопустимых установок, 0 в противном случае.
-
Виртуальная память пользователя. Функции управления динамической памятью.
виртуальную память пользователя. Она организована из трех сегментов: текст, данные и стек.
Текстовый сегмент – это просто выполняемый код, то есть машинный код программы.
Сегмент данных используется для хранения внешних (external) и статических (static) переменных. Он содержит инициализированные и неинициализированные данные. Неинициализированные данные автоматически устанавливаются равными нулю при входе в программу. Адрес внешней памяти etext обозначает конец текстового сегмента. Конец инициализированных и неинициализированных данных обозначен адресом внешних переменных edata и end, соответственно. Переменные etext, edata и end – целые.
Первоначально, граница выделяемой памяти программы – это адрес end. Граница выделяемой памяти может изменяться при вызове системных вызовов или библиотечных функций управления памятью. Однако адреса трех переменных etext, edata и end неизмены.
Стек программы используется для хранения аргументов функции и ее локальных (automatic) переменных. Стек также используется для сохранения регистров при вызове функции. Расположение вершины стека труднодоступно.
Функции управления динамической памятью дают возможность легко управлять памятью.
Они являются функциями библиотеки общего назначения.
Объявления этих функций находится в заголовочном файле , поэтому в программах, использующих эти функции, необходимо включать следующую директиву препроцессора:
#include
-
Динамические структуры данных.
Динамические структуры данных могут быть организованы линейно, в виде дерева и в виде сети.
Линейная динамическая структура - изменяемая последовательность элементов. Примеры таких структур:
-
стек (элемент можно добавлять только в конец; удаляется только последний элемент);
-
очередь (элемент можно добавлять только в конец; удаляется только первый элемент);
-
дек (добавление и удаление элементов и с начала, и с конца).
Дерево - структура, в которой каждый элемент (вершина) ссылается на один или более элементов следующего уровня.
В сетевой структуре никаких ограничений на связи не накладывается.
Линейные динамические структуры, такие как стеки, очереди и деки, при известном количестве элементов в них можно реализовать в виде динамических или статических одномерных массивов. В противном случае используют списки.
Список - это структура, в которой помимо данных хранятся также адреса элементов. Элемент списка состоит из двух частей: информационной и адресной, где хранятся указатели на следующие элементы. В зависимости от количества полей в адресной части и порядка связывания элементов различают:
-
линейные односвязные списки - единственное адресное поле содержит адрес следующего элемента, для последнего элемента списка этот адрес равен нулю (NULL),
-
кольцевые односвязные списки - единственное адресное поле содержит адрес следующего элемента, последний элемент ссылается на первый,
-
линейные двусвязные списки - каждый элемент содержит адреса предыдущего и последующего элемента; первый элемент в качестве адреса предыдущего элемента, а последний элемент в качестве адреса последующего элемента содержат нули (NULL),
-
кольцевые двусвязные списки - каждый элемент содержит адреса предыдущего и последующего элемента, причем первый элемент в качестве адреса предыдущего элемента содержит адрес последнего элемента, а последний элемент в качестве адреса предыдущего элемента содержит первого элемента,
-
n-связные списки - каждый элемент включает несколько адресных полей, в которых записаны адреса других элементов или NULL.