
- •Московский государственный социальный университет академия информатики и информационных технологий
- •Введение
- •Часть. Основы программирования на Си
- •1.1. Структура простейшей Си-программы
- •1.2. Данные в Си и операции над ними
- •1.2.1. Свойства ячейки памяти. Переменные и константы
- •1.2.2. Типы данных в Си
- •1.2.3. Правила записи констант в Си
- •1.2.4. Описание переменных и именованных констант в Си.
- •1.2.5. Выражения в Си
- •1.3. Операторы преобразования данных
- •1.3.1. Общие положения
- •1.3.2. Функция форматного выводаprintf()
- •1.3.3. Функция форматного вводаscanf()
- •1.4. Разработка программ на Си
- •1.4.1. Понятие о качестве программы и основные технологические принципы разработки программ
- •1.4.2. Алгоритм и способы его записи.
- •1.4.3. Изображение алгоритмов в виде блок-схем
- •1.4.4. Базовые структуры алгоритмов и их кодирование на Си.
- •1. Следование
- •2. Разветвление (развилка)
- •If (условие)
- •If (условие)
- •3. Цикл
- •1.4.4. Примеры разработки программ
- •1.5. Массивы и указатели
- •1.5.1. Понятие массива. Основные правила работы с массивами в Си
- •1.5.2. Примеры программ с массивами.
- •1.5.3. Инициализация массивов
- •1.5.4. Указатели в Си10
- •1.5.5. Связь массивов с указателями в Си
- •Часть. Функции и многофайловые программы в Си
- •2.1. Общие сведения о подпрограммах и функциях
- •2.2. Функции си
- •2.2.1. Описание функции
- •2.2.2. Обращение к функции
- •2.2.3. Место описания функции в программе
- •2.2.4. Примеры программ, использующих функции
- •2.3. Краткие сведения о препроцессоре Си
- •2.3.2.Директива макроопределения #define
- •2.3.3. Директива #include включения файлов
- •2.3.4. Директивы условной компиляции
- •2.415. Многофайловые си-программы
- •2.4.1. Структура программы на Си. Область действия переменных
- •2.4.2. Время жизни и класс памяти переменных
- •Описатели класса памяти
- •2.4.3 Понятие о файле проекта
- •Часть. Обработка символьной информации и документов сложной структуры
- •3.1. Обработка символьной информации на Си
- •3.1.1. Символьный тип
- •3.1.2. Работа со строками символов в Си. Строковые литералы. .
- •3.1.3. Функции и макросы для работы с символьной информацией
- •3.1.4. Примеры программ
- •3.2. Тип "структура" в Си
- •Структура
- •3.3. Файлы в Си
- •3.3.1. Общие понятия.
- •3.2.Функции Си для работы с файлами
- •3.3.3. Примеры программ, использующих файлы
- •Литература
- •Содержание
2.4.2. Время жизни и класс памяти переменных
Кроме понятия области действия имени, рассматривается близкое к нему (но не совпадающее!) понятиевремени жизни (существования)имени. По времени жизни имена делятся настатические(существуют все время выполнения программы),автоматические (существуют во время выполнения функции, в которой описаны),динамические (получают место в памяти с помощью операторов динамического распределения памяти).
Статическим переменным компилятор выделяет ячейки памяти в фиксированных сегментах данных. Автоматические переменные располагаются в стеке. Существуют автоматические переменные, описанные как register; они хранятся во внутренних регистрах процессора; эти переменные их мы рассматривать не будем.
Статические переменные - это глобальные переменные и переменные, описанные как static; последние доступны только функции, в которой описаны, но существуют (занимают память) во время выполнения всей программы
Автоматические переменные - это локальные переменные, не объявленные static,(и переменные типаregister).
Статические локальные переменные часто используются программами управления ресурсами - например, для подсчета числа обращений к программе. Ниже приведен пример использования локальной статической переменной:
f(); /*шаблон*/
main()
{...f();f();...;f();/*переменная i будет накапливать число обращений*/
} /* к f*/
f()
{static int i=0;
/*инициализация работает один раз при первом входе в блок */
... i=i+1;
}
Класс памятихарактеризует область действия, время жизни и расположение в памяти переменных. Возможно следующее расположение в памяти: стек, сегмент данных или регистры процессора, динамическая память.
Ниже приведена простейшая схема оперативной памяти, используемой системой Borland C++[4].
Верхние адреса |
стек (локальные переменные) |
|
динамическая память |
|
сегмент данных (статическая память) |
Нижние адреса |
код программы |
Описатели класса памяти
auto- для переменных, действующих в пределах блока; обычно принимается по умолчанию.
register- тоже, что и auto, но для регистров процессора.
static- для описания статических переменных.
extern - делает доступными глобальные переменные, расширяя их область действия.
Характеристики классов памяти приведены в таблице :
Таблица 4
Класс памяти |
Время жизни в программе |
Область действия |
Место в памяти |
auto |
временно |
блок |
стек |
register |
временно |
блок |
регистры процессор |
static16 |
постоянно |
блок |
сегмент памяти |
extern |
постоянно |
файл, программа |
сегмент памяти |
2.4.3 Понятие о файле проекта
В системе Borland C++ информация (имя файла, директорий) об объединяемых в одну программу файлах помещается в файл проекта. Файлы, входящие в проект, компилируются совместно. Затем эти файлы объединяются компоновщиком в один загрузочный модуль (EXE - файл).
Составление файла проекта осуществляется через пункт Project главного меню. Этот пункт содержит подпункты:
Оpen project (открыть проект) - выбор и открытие существующего проекта или создание нового;
Close project (закрыть проект) - закончить работу с проектом;
Add item (добавить элемент) - добавить файл в проект;
Delete item (удалить элемент) - удалить файл из проекта.
При работе с пунктом Projectсреда активизирует окно проекта, где высвечиваются файлы, входящие в данный проект, а при работе с подпунктами Open Project и Add item - eще и окно выбора (как вFile/Open), чтобы легче было найти имя нужного проекта или файла.
Работа с окном выбора при добавлении файлов заканчивается выбором кнопки Done. Окно Projectупрощает переход от одного файла, включенного в проект, к другому при их редактировании. Для этого высвечивание перемещается на имя нужного файла в окне Project и нажимается Enter (или 2 раза левая кнопка мыши). Запускать объединенную программу на компиляцию и выполнение следует из активного окна проекта.