Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по информатике.doc
Скачиваний:
5
Добавлен:
15.09.2019
Размер:
98.3 Кб
Скачать

Объекты. Внешние переменные.

Объект – это некоторая именованная область памяти. Его интерпретация зависит от 2-х главных характеристик: класса и типа памяти. Класс памяти сообщает время жизни памяти связанной с данным объектом. Тип определяет какого рода значение находится в объекте. Время жизни – интервал выполнения программы, в течение которого программный объект существует. Время жизни может быть глобальным и локальным. Объект с глобальным временем жизни имеет распределённую память и определённое значение на протяжении всего выполнения программы. Объект с локальным временем жизни имеет распределённую память и определённое значение только внутри того блока, где он был определён. Область видимости – это часть текста программы, в котором может быть использован данный объект. Существует два класса памяти: автоматический и статический. Декларация, заданная внутри блока, если в ней отсутствует спецификация памяти или указан спецификатор auto, создаёт автоматический объект. Статические объекты могут быть локализованы в функции или располагаться вне её. Но в обоих случаях значения сохраняются при выходе из функции или блока. Классы памяти специфицируются следующим образом:

  1. Auto – автоматические объекты с локальным временем жизни.

  2. Register – автоматические объекты с локальным временем жизни. Значения располагаются на регистрах процессора.

  3. Static – статические объекты с глобальным временем жизни.

  4. Extern – статические объекты с глобальным временем жизни. Показывают, что блок находится в области внешней декларации.

Структуры

Часто приходится сталкиваться с набором данных, имеющих достаточно сложную логическую организацию. Статичность и однородность массивов ограничивают возможность их применения для описания сложных логических структур. С целью решения этой задачи во многих языках программирования применяются специальные типы данных. В С они называются структурами. Структура – это набор из одной или более переменных, возможно, различных типов, сгруппированных под одним именем. Описание структуры состоит из заключённого в фигурные скобки списка описания и начинается с ключевого слова struct. Затем идёт необязательный тэг, затем описание, и, опять же, необязательное имя. Тэги и члены структуры могут иметь такие же имена, как и обычная переменная, поскольку их можно различить по контексту. Так же как и в случае другого базового типа, за фигурной скобкой может следовать список переменных. Описание структуры, за которым не следует списка переменных, не приводит к выделению памяти. Однако, если такое описание снабжено тэгом, то этот тэг в дальнейшем может быть использован при определении фактических экземпляров. Внешнюю и статическую структуры можно инициализировать при объявлении.

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

Объединения

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

В сущности, объединения – это структура, все члены которой имеют нулевое смещение относительно её базового адреса. Инициализировать объединения при объявлении можно значением имеющим тип его первого члена.

Доступ к файлу

Часто возникают ситуации, когда ввод/вывод данных необходимо осуществлять в файл, заранее не связанный с программой. Прежде чем считать или записать данные с файла, этот файл должен быть открыт с помощью специальной функции fopen из стандартной библиотеки. Функция fopen проводит некоторые действия с ОС и возвращает внутреннее имя, которое должно использоваться при последующих обращениях к файлу. Это внутренне имя является указателем файла и фактически является структурой, которая содержит информацию о файле. Данная структура определяется в стандартной библиотеке ввода/вывода stdio.h. Для чтения или записи, если файл уже открыт, могут использоваться функции getc, putc, fprintf, fscanf. Указатели файлов stdin, stdout, stderr заранее определены в библиотеке как стандартные ввод, вывод и сообщение об ошибке. Они могут использовать объекты типа указатель на файл. fclose – функция обратная fopen. Она разрывает связь между указателем файла и внешним именем файла. При нормальном завершении программы, функция fclose вызывается автоматически. Функция exit вызывает завершении программы. Функция exit автоматически вызывает fclose.