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

59 Классы памяти. Области действия объектов

Класс памяти программного объекта определяет время ее существования (время жизни) и область видимости (действия) и может принимать одно из значений: auto, extern, static и register. Область действия объекта – это часть кода программы, в которой его можно использовать для доступа к связанному с ним участку памяти. В зависимости от области действия переменная может быть локальной (внутренней) или глобальной (внешней). Эти переменные соответственно называются локальными (внутренними) переменными, формальными параметрами и глобальными (внешними) переменными. Существуют следующие области действия:

Блок. Идентификаторы, описанные внутри блока, являются локальными. Область действия идентификатора начинается в точке определения и заканчивается в конце блока. После выхода из блока память освобождается.

Файл. Идентификаторы, описанные вне любого блока, функции, класса или пространства имен, имеют глобальную видимость и постоянное время жизни и могут использоваться с момента их определения.

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

Прототип функции. Идентификаторы, указанные в списке параметров прототипа (декларации) функции, имеют областью действия только прототип функции.

Структурированный тип данных. Элементы структур и объединений являются видимыми лишь в их пределах. Они образуются при создании переменной указанного типа и разрушаются при ее уничтожении.

60.Работа с файлами.Типы файлов (текстовый и бинарный)

Файл –это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки как единое целое. В файлах размещаются данные, предназначенные для длительного хранения.

Различают два вида файлов: текстовые и бинарные. Текстовые файлы представляют собой последовательность ASCII символов и могут быть просмотрены и отредактированы с помощью любого текстового редактора.Бинарные (двоичные) файлы представляют собой последовательность данных, структура которых определяется программно.В языке Си имеется большой набор функций для работы с файлами,большинство которых находятся в библиотеках stdio.h и io.h.

Открытие файла FILE *указатель на файл;

FILE - идентификатор структурного типа, описанный в стандартной библиотеке stdio.h. Для открытия файла для доступа используется функция

FILE* fopen(char * имя_файла, char *режим); При успешном открытии функция fopen возвращает указатель на файл (в дальнейшем - указатель файла). При ошибке возвращается NULL.

Посимвольный ввод-вывод происходит прием одного символа из файла или передача одного символа в файл:

int fgetc(FILE *f) - считывает и возвращает символ из файла f;

int fputc(int ch, FILE *f) - записывает в файл f код ch символа.

Закрытие файла После работы с файлом доступ к нему необходимо закрыть. Это выполняет функция int fclose(указатель файла). Например: fclose (f);

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

Бинарные файлы (двоичные) файлы обычно используются для организации баз данных, состоящих из объектов структурного типа. При чтении-записи бинарных файлов удобнее всего пользоваться функциями, выполняемыми блоковый ввод-вывод fread и fwrite.Наиболее распространенные функции,:

1) int fileno(FILE *f) – возвращает значение дескриптора файла f – fd (число, определяющее номер файла);

2) long filelength(int fd) – возвращает длину файла, имеющего номер (дескриптор) fd в байтах;

3) int chsize(int fd, long pos) – выполняет изменение размера файла, имеющего номер fd, признак конца файла устанавливается после байта с номером pos;

4) int fseek(FILE *f, long size, int kod) – выполняет смещение указателя файла f на size байт в направлении признака kod: 0 - от начала файла;1 - от текущей позиции указателя; 2 - от конца файла;

5) long ftell(FILE *f) – возвращает значение указателя на текущую позицию файла (-1 – ошибка);

6) int feof(FILE *f) – возвращает ненулевое значение при правильной записи признака конца файла;

7) int fgetpos(FILE *f, long *pos) – определяет значение текущей позиции pos файла f, возвращает 0 при успешном завершении.