Кафедра: Автоматика и Вычислительная Техника
Модульное программирование
Содержание
1. Классы памяти идентификатора
1.1 Область действия
1.2 Область видимости
1.3 Продолжительность жизни
2. Модели памяти ОЗУ
2.1 Виды моделей памяти
2.2 Размещение исполняемого файла в ОЗУ в модели large
3. Передача данных в функцию
3.1 Передача параметров по значению
3.2 Передача параметров по адресу
3.3 Передача одномерных массивов
3.4 Передача двумерных массивов
4. Тестирование функций
5. Практические задания
5.1 Указать классы памяти переменной
5.2 Работаем с адресами
5.3 Прототипы функций
5.3.1 Свопинг
5.3.2 Индексы максимальных элементов одномерного массива
5.3.3 Индексы максимальных элементов двумерного массива
5.3.4 Угол между двумя векторами
5.3.5 Определитель матрицы
5.4 Выделение фрагмента программы в отдельную функцию
5.5 Тестирование функции
5.5.1 Сортировка массива
5.5.2 МиниМакс
6. Лабораторные задания
6.1 Линейное уравнение
6.2 Четные элементы массива
6.3 Нахождение простых чисел
6.4 Количество вхождений подстроки в строку
6.5 Произведение матриц
7. Дополнительные задания
Библиографический список
1. Классы памяти идентификатора С каждым объектом памяти переменной связаны следующие понятия: область действия, область видимости и продолжительность жизни. Эти три понятия объединяются в понятие класс памяти переменной. Класс памяти устанавливается синтаксисом и местом размещения определения этой переменной.
Спецификатор класса памяти в объявлении переменной может быть auto, register, static или extern. Если класс памяти не указан, то он определяется по умолчанию из контекста объявления.
Объекты классов auto и register имеют локальное время жизни. Спецификаторы static и extern определяют объекты с глобальным временем жизни.
При объявлении переменной на внутреннем уровне может быть использован любой из четырех спецификаторов класса памяти, а если он не указан, то подразумевается класс памяти auto.
Переменная с классом памяти auto имеет локальное время жизни и видна только в блоке, в котором объявлена. Память для такой переменной выделяется при входе в блок и освобождается при выходе из блока. При повторном входе в блок этой переменной может быть выделен другой участок памяти.
Переменная с классом памяти auto автоматически не инициализируется. Она должна быть проинициализирована явно при объявлении путем присвоения ей начального значения. Значение неинициализированной переменной с классом памяти auto считается неопределенным.
Спецификатор класса памяти register предписывает компилятору распределить память для переменной в регистре, если это представляется возможным. Использование регистровой памяти обычно приводит к сокращению времени доступа к переменной. Переменная, объявленная с классом памяти register, имеет ту же область видимости, что и переменная auto. Число регистров, которые можно использовать для значений переменных, ограничено возможностями компьютера, и в том случае, если компилятор не имеет в распоряжении свободных регистров, то переменной выделяется память как для класса auto. Класс памяти register может быть указан только для переменных с типом int или указателей с размером, равным размеру int.
Переменные, объявленные на внутреннем уровне со спецификатором класса памяти static, обеспечиваю возможность сохранить значение переменной при выходе из блока и использовать его при повторном входе в блок. ............